【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

相关推荐
一隅论数智5 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
XiHongShi20165 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本5 天前
离散数学第六课
学习·离散数学
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车5 天前
C/C++ 为什么需要编译器?
开发语言·c++
AI职业加油站5 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
旖旎夜光5 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊5 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型