02 Rust中的字符串

  • 拾一维
  • 更新于 2023-03-06 08:49
  • 阅读 1714

Rust根据不同的应用场景将字符串划分为了不同种类,我们今天只介绍最常见的两种str与String

Rust根据不同的应用场景将字符串划分为了不同种类,我们今天只介绍最常见的两种strString

2.1 str

str是Rust中的原生类型,存放在静态存储区。因为它是动态类型,在编译期无法确定大小,所以我们经常使用它的引用形式&strstr总是有效的UTF-8编码

它可以由字面量直接创建生成,也可以由其他类型转换而来,也可转为其它类型

2.1.png 事实上,str作为rust的原生类型,它实现了很多方法。支持对字符串进行转换、分割、解析、查找的等操作。具体读者可以参见标准库

https://doc.rust-lang.org/std/primitive.str.html#

另外,str实现了常见的trait,比如AsMut、Debug、From等等,另外也实现了Send和Sync,可以在并发编程中无忧使用。

特别说明:引用类型在Rust中是一等公民,并且是Copy的

2.2 String

String是一个胖指针(也是个智能指针:可以自动解引用以及调用析构函数)。它包含三个word:分别是的ptr、cap和len。数据存放在堆上,动态大小。本质上是一个结构体

2.2.png 注意:String没有实现Copy trait

String一个常用的场景就是处理一些文件内容,我们来看一个比较全面的例子,这个例子读取了一个本地文件中数字,并做了求和操作

本地文件名为:sum_text

2.3.png 通过上面的例子,我们可以看到,在一些数据是动态场景下,我们经常会使用到String。另外,关于String牵扯到的知识点非常多,比如所有权机制、智能指针、各种Trait、内存、函数调用栈等,这些知识点我们后面会一一讲解

示例代码Github地址:

https://github.com/shiyivei/from-principle-to-practice/blob/main/src/principle-and-practice/src/type\_system/string\_and\_char.rs

更多内容,欢迎关注公众号拾一维

1.5.png

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。
该文章收录于 Rust进阶知识
32 订阅 11 篇文章

0 条评论

请先 登录 后评论
拾一维
拾一维
For science, art and meaning