Rust 字符串基本使用教程及代码演示

文章目录

  • 一、基本使用教程
    • 1、字符串类型
      • `String`
      • `&str`
    • 2、创建字符串
      • 创建`String`
      • 创建`&str`
    • 3、字符串操作
      • 索引
      • 切片
      • 格式化
      • 字符串比较
    • 4、字符串和集合
    • 5、字符串的错误处理
    • 6、参考链接
  • 二、代码演示
    • 1、代码演示
    • 2、执行结果

一、基本使用教程

在Rust中,字符串是编程中非常基础且重要的部分。Rust提供了两种主要的字符串类型:String&str。本教程将带你了解Rust中字符串的基本概念和操作。

1、字符串类型

String

String是一个可增长的、拥有所有权的、UTF-8编码的字符串类型。它在堆上分配内存,因此可以动态地增加或减少其长度。

&str

&str是一个字符串切片,它是一个指向某个字符串数据的引用。它不拥有数据,因此是不可变的。

2、创建字符串

创建String

let mut s = String::new(); // 创建一个空的String
s.push_str("Hello, Rust!"); // 向String中添加内容

创建&str

let data = "Hello, Rust!";
let s = &data; // 创建一个指向data的字符串切片

3、字符串操作

索引

在Rust中,字符串不能通过索引直接访问单个字符,因为它们是UTF-8编码的。但是,可以使用chars()方法迭代字符。

for c in "Hello, Rust!".chars() {
    println!("{}", c);
}

切片

可以使用切片操作来获取字符串的一部分。

let s = String::from("Hello, Rust!");
let slice = &s[7..12]; // 获取"Rust"这个切片

格式化

使用format!宏可以创建格式化的字符串。

let name = "World";
let greeting = format!("Hello, {}!", name);

字符串比较

字符串可以使用==!=运算符进行比较。

assert_eq!("Hello", "Hello");
assert_ne!("Hello", "hello");

4、字符串和集合

字符串可以很容易地被放入集合中,如VecHashSet

let mut words = vec!["Rust", "is", "awesome"];
words.push("and");

5、字符串的错误处理

在处理字符串时,可能会遇到一些错误,例如:

  • IndexError:尝试访问不存在的索引
  • Utf8Error:处理非UTF-8编码的字节序列

6、参考链接

  • Rust官方文档
  • Rust by Example

二、代码演示

1、代码演示

fn main() {
    // 创建String和&str
    let mut s = String::new();
    s.push_str("Hello, Rust!");
    let s_slice: &str = "Hello, Rust!";

    // 索引和切片
    for c in s.chars() {
        println!("{}", c);
    }
    let slice = &s[7..12]; // 应输出 "Rust"
    println!("{}", slice);

    // 格式化字符串
    let name = "World";
    let greeting = format!("Hello, {}!", name);
    println!("{}", greeting); // 应输出 "Hello, World!"

    // 字符串比较
    assert_eq!(s_slice, "Hello, Rust!");
    assert_ne!(s_slice, "hello, Rust!");

    // 字符串和集合
    let mut words = vec!["Rust", "is", "awesome"];
    words.push("and");
    assert_eq!(words, vec!["Rust", "is", "awesome", "and"]);

    // 测试字符串的错误处理
    // 注意:以下代码将会引发错误,仅作为示例,不应在实际代码中使用
    // let error_slice = &s[12..20]; // 这将引发panic,因为索引越界
    // println!("{}", error_slice);

    println!("All tests passed!");
}

2、执行结果

C:/Users/Administrator/.cargo/bin/cargo.exe run --color=always --package hello --bin hello
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s
     Running `target\debug\hello.exe`
H
e
l
l
o
,                
                 
R                
u                
s                
t                
!                
Rust!            
Hello, World!    
All tests passed!

进程已结束,退出代码为 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/577375.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Ant-Desgin 头像上传框】限制数量为1张图片,base64,其他需求可以改我组件中的代码

Ant-Desgin 头像上传框 样式图参数主要代码UpLoad 组件父组件 样式图 图片数量限制为1,当选择了图片后,需要切换图像时需点击头像完成切换 参数 /*** description: 图片上传组件* param {*} action: 上传地址* param {*} width: 宽度* param {*} height…

【网络技术】【Kali Linux】Wireshark嗅探(十一)以太网Ethernet协议报文捕获及分析

往期 Kali Linux 上的 Wireshark 嗅探实验见博客: 【网络技术】【Kali Linux】Wireshark嗅探(一)ping 和 ICMP 【网络技术】【Kali Linux】Wireshark嗅探(二)TCP 协议 【网络技术】【Kali Linux】Wireshark嗅探&…

Eagle for Mac:强大的图片管理工具

Eagle for Mac是一款专为Mac用户设计的图片管理工具,旨在帮助用户更高效、有序地管理和查找图片资源。 Eagle for Mac v1.9.2中文版下载 Eagle支持多种图片格式,包括JPG、PNG、GIF、SVG、PSD、AI等,无论是矢量图还是位图,都能以清…

SnapGene Mac v5.3.1中文激活版:综合性分子生物学软件

SnapGene Mac是一款功能全面、操作便捷的综合性分子生物学软件,专为Mac用户打造。它集成了DNA序列编辑、分析、可视化和团队协作等多种功能,为科研人员提供了一个高效、可靠的分子生物学研究工具。 SnapGene Mac v5.3.1中文激活版下载 在SnapGene Mac中&…

Spring Boot 3.2.5 集成 MyBatisPlus

前置条件&#xff0c;先连接好数据库&#xff0c;并且数据库里新建表插入几条数据 连接mysql传送门 版本 Spring Boot 3.2.5 第一步&#xff0c;添加依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-start…

短视频矩阵营销系统 poihuoqu 任意文件读取漏洞复现

0x01 产品简介 短视频矩阵营销系统是由北京华益云数据科技有限公司开发的一款产品,这家公司专注于抖音短视频矩阵营销系统的研发,致力于为企业提供全方位的短视频营销解决方案。华益云抖销短视频矩阵系统可以帮助企业快速搭建多个短视频账号,实现内容的批量制作和发布,提高…

vue echarts折线图 折线堆积图和折线面积图

vue echarts折线图 折线堆积图和折线面积图 1、折线堆积图和折线面积图的结合&#xff1b; 上代码 <template><section><divid"performaceLineChart"ref"performaceLineChartRef"style"width: 100%; height: 500px"></d…

CasinoRoyale靶机练习实践报告

CasinoRoyale靶机练习实践报告 下载地址: https://drive.google.com/open?id1FYP246L63zShV00wOckAQ5F5XJ4HkZ0Lhttps://download.vulnhub.com/casinoroyale/CasinoRoyale.ovahttps://download.vulnhub.com/casinoroyale/CasinoRoyale.ova.torrent ( Magnet) 1 安装靶机 …

分布式WEB应用中会话管理的变迁之路

Session一词直译为“会话”&#xff0c;意指有始有终的一系列动作&#xff0f;消息。Session是Web应用蓬勃发展的产物之一&#xff0c;在Web应用中隐含有“面向连接”和“状态保持”两个含义&#xff0c;同时也指代了Web服务器与客户端之间进行状态保持的解决方案。 在Web应用…

018基于SSM的音乐系统网站

018基于SSM的音乐系统/网站 开发环境&#xff1a; Jdk7(8)Tomcat7(8)MysqlIntelliJ IDEA(Eclipse)Maven 数据库&#xff1a; MySQL 技术&#xff1a; SpringSpring mvcMybatisJqueryVideo jsJSPJSTLEasyUI 适用于&#xff1a; 课程设计&#xff0c;毕业设计&#xff0c;学习…

tiktok如何影响用户行为的分析兼论快速数据分析的策略

tiktok如何影响用户行为的分析 快速数据分析的策略流程&#xff1a; 1.确定指标变量&#xff0c;也就确定了数据分析想要回答的问题。想回答不同的问题&#xff0c;就选择不同的指标变量。 变量筛选方法选出指标变量相关的变量&#xff1b; 针对筛选出的变量进行描述性分析和因…

职场口才使人取得事业上的成功?

职场口才使人取得事业上的成功&#xff1f; 一、引言 在职场中&#xff0c;一个人的口才能力往往成为其事业成功的关键因素。优秀的职场口才不仅能够帮助我们更好地与他人沟通交流&#xff0c;还能够展现个人的专业素养和魅力&#xff0c;为事业的顺利发展奠定坚实基础。本文将…

【软件】ERETCAD-Env:在轨空间环境3D动态仿真软件

文章介绍了Extreme-environment Radiation Effect Technology Computer-Aided Design – Environment (ERETCAD-Env)软件&#xff0c;文章的介绍和展示了ERETCAD-Env软件的功能和特点&#xff0c;这是一款用于动态模拟在轨卫星所处空间环境的计算机辅助设计软件。强调了该软件在…

城市建筑轮廓矢量边界、建设用地数据、城市道路网分布、城市土地利用规划分布、土地利用数据、城市绿地分布

数据下载链接&#xff1a;数据下载链接 中国主要城市建筑底面轮廓和建筑高度空间分布数据&#xff0c;包括省会城市、地级市及县级市等主要城市。城市建筑底面轮廓和建筑高度数据&#xff0c;数据坐标为 WGS84地理坐标&#xff0c; 数据格式为 SHP 文件。数据范围基本覆盖城市…

vscode中用node的终端安装模块

1 安装模块 在控制台输入 npm install crypto-js 创建好了会多几个文件 crypto-js是我们刚刚装的包&#xff0c;用于hash算法和aes des算法 2 package.json文件的作用 当我们把node-modules删了&#xff0c;或者是新建一个文件后我们不用把这个node-modules拷贝过去 在控制台…

路由器使用docker安装mysql和redis服务

路由器使用docker安装mysql和redis服务 1.先在路由器中开启docker功能 &#xff08;需要u盘 或者 移动硬盘&#xff09; 2. docker 管理地址 :http://192.168.0.1:11180/#/ 3. 拉取镜像 4. mysql容器参数设置 MYSQL_ROOT_PASSWORD 5. redis 容器设置 开发经常需要用到 &…

网络安全培训对软件开发人员的重要性

微信搜索关注&#xff1a;网络研究观 阅读获取更多信息。 组织所经历的持续不断的网络威胁没有任何放缓的迹象&#xff0c;使得实现有效安全的任务变得越来越具有挑战性。 根据最新的 Verizon 数据泄露调查报告&#xff0c;2023 年高级攻击增加了 200% 以上。 IBM 数据泄露成…

安居水站:自来水:日常中的安全与奥秘

在我们的日常生活中&#xff0c;自来水如同空气一样&#xff0c;是生活中不可或缺的一部分。每当我们拧开水龙头&#xff0c;清澈的水流便汩汩而出&#xff0c;滋养着我们的生活和健康。然而&#xff0c;这看似普通的自来水背后&#xff0c;却隐藏着许多我们可能并不了解的知识…

Spark AQE 导致的 Driver OOM问题

背景 最近在做Spark 3.1 升级 Spark 3.5的过程中&#xff0c;遇到了一批SQL在运行的过程中 Driver OOM的情况&#xff0c;排查到是AQE开启导致的问题&#xff0c;再次分析记录一下&#xff0c;顺便了解一下Spark中指标的事件处理情况 结论 SQLAppStatusListener 类在内存中存…

mac 教程 终端如何拆墙

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…
最新文章