【Rust入门知识点学与练】第3课:String 与 &str 的区别

知识点:两种字符串类型

下面展示一些 内联代码片

rust 复制代码
fn main() {
    // &str --- 字符串切片,写死在代码里的,不能改
    let s1 = "hello";

    // String --- 堆上分配的,可以修改
    let mut s2 = String::from("hello");

    // String 可以追加内容
    s2.push_str(" world");
    println!("{}", s2);  // hello world

    // String 可以追加单个字符
    s2.push('!');
    println!("{}", s2);  // hello world!

    // &str 转 String
    let s3 = s1.to_string();
    println!("{}", s3);

    // String 转 &str
    let s4 = s2.as_str();
    println!("{}", s4);
}

核心规则

&str String

能修改吗 ❌ 不能 ✅ 可以(加 mut)

创建方式 "hello" String::from("hello")

什么时候用 只读、固定文本 需要拼接、修改

动手试试

补全下面的代码:

复制代码
fn main() {
    // 补全:用 String::from 创建一个可变字符串 greeting,内容为 "你好"
    // 提示:记得加 mut

    // 补全:给 greeting 追加 ",世界"
    // 提示:用 push_str

    // 补全:给 greeting 追加字符 '!'
    // 提示:用 push,注意字符用单引号

    // 打印 greeting,期望输出: 你好,世界!

贴代码

rust 复制代码
fn main() {
    // 补全:用 String::from 创建一个可变字符串 greeting,内容为 "你好"
    // 提示:记得加 mut
    let mut greeting = String::from("你好");

    // 补全:给 greeting 追加 ",世界"
    // 提示:用 push_str
    greeting.push_str(",世界");

    // 补全:给 greeting 追加字符 '!'
    // 提示:用 push,注意字符用单引号
    greeting.push('!');

    // 打印 greeting,期望输出: 你好,世界!
    println!("{}", greeting);

    // 补全:把 greeting 转成 &str 赋给 result
    // 提示:用 as_str()
    let result = greeting.as_str();

    // 打印 result
    println!("{}", result);
}

评语

完全正确!👏

你掌握了:

String::from() 创建可变字符串

push_str() 追加字符串、 push() 追加单个字符

as_str() 把 String 转成 &str

相关推荐
秋名RG1 小时前
Java 核心特性一览
java·开发语言
平头哥AI1 小时前
Day 01 | go run 跑通第一个 Go 程序,go build 留下一个能拷走的 exe
开发语言·后端·golang
小雨笙笙2 小时前
机器学习:线性回归学习
学习·机器学习·线性回归
HugoStudio_SWAN2 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
葡萄城技术团队2 小时前
工业数据可视化:使用活字格 AIcoding + Three.js 构建轻量化三维设备监控大屏
开发语言·javascript·信息可视化
qiaosaifei2 小时前
JAVA老项目中有大量的类名_编译时报找不到符号错误
java·开发语言
聪明蛋子哟2 小时前
MCP协议深度落地:如何用Python/Java双语言实现统一的工具调用网关?
java·开发语言·python
是隼人2 小时前
buuctf-pwn [HarekazeCTF2019]baby_rop2(64位ret2libc)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
一晌小贪欢2 小时前
python-第27天:Python面向对象详解
开发语言·python·数据可视化·面向对象·python办公