【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

相关推荐
H.莓飛9 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu1149 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
爱喝水的鱼丶10 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
小灰灰搞电子11 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
外收内放11 小时前
面向对象高级(实战案例)
开发语言·python·学习
Flynt12 小时前
Cloudflare 用 Rust 重写了 TypeScript:我拿同一批代码跑了跑,报错一模一样,退出码不一样
rust·typescript·前端工程化
薛定e的猫咪12 小时前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
fanruitian12 小时前
python else用法
开发语言·python
FRing0312 小时前
JavaScript入门到精通二十六(变量提升、函数剩余参数、展开运算符、ES6箭头函数)
开发语言·前端·javascript·es6·箭头函数
云深麋鹿12 小时前
C++ | 基于红黑树实现mymap与myset
开发语言·c++