首页 > 其他分享 >Rust语言 , string(&str) 和 String 区别

Rust语言 , string(&str) 和 String 区别

时间:2023-04-09 19:12:17浏览次数:32  
标签:String 类型 str 字符串 Rust string

在 Rust 中,string 表示字符串切片类型(&str),可以用于引用字符串数据。而 String 则是字符串类型,是一种可变的字符串,可以创建、修改和销毁。

具体来说,string 是 Rust 的核心语言类型之一,它是一个不可变的字符串切片类型,通常用于引用已有的字符串数据。由于字符串切片是不可变的,因此不能直接向其添加或删除字符,需要使用其他方式操作字符串。

例如,以下代码中的 message 变量是一个 &str 类型的字符串切片:

let message = "Hello, world!";

String 则是 Rust 标准库提供的一个可变的字符串类型,可以动态地分配、修改和释放内存。使用 String::new() 方法可以创建一个空的 String 对象,使用 push_str() 方法可以向 String 对象中追加字符串,使用 replace() 方法可以替换 String 对象中的子串,等等。

例如,以下代码中的 greeting 变量是一个 String 类型的字符串:

let mut greeting = String::new();
greeting.push_str("Hello, ");
greeting.push_str("world!");
println!("{}", greeting);  // 输出 "Hello, world!"

需要注意的是,stringString 在一些操作上是可以互相转换的。例如,可以使用 to_string() 方法将 string 类型的字符串切片转换为 String 类型的字符串,也可以使用 as_str() 方法将 String 类型的字符串转换为 string 类型的字符串切片。

来源

2023/3/30 19:25:40

ChatGTP询问

标签:String,类型,str,字符串,Rust,string
From: https://www.cnblogs.com/xiamuguizhi/p/17276088.html

相关文章

  • Do you know the bitwise sum sample demonstrated in "Neural Networks and Deep Lea
    Doyouknowthebitwisesumsampledemonstratedin"NeuralNetworksandDeepLearning"byautor MichaelNielsen?Yes,Iamfamiliarwiththebitwisesumexampledemonstratedin"NeuralNetworksandDeepLearning"byMichaelNielsen......
  • 编程:利用 FileInputStream 和 FileOutputStream,完成下面的要
    (1)用FileOutputStream往当前目录下“test.txt”文件中写入“HelloWorld”;(2)利用FileInputStream读入test.txt文件,并在控制台上打印出test.txt中的内容。(3)要求用try-catch-finally处理异常,并且关闭流应放在finally块中。代码实现:importjava.io.FileInput......
  • 【Java】FileInputStream和FileOutputStream基本使用
    文章目录InputStream-字节输入流1.FileInputStream介绍2.FileOutputStream介绍3.文件的拷贝IO流-体系图文件VS流InputStream-字节输入流InputStream抽象类是所有类字节输入流的超类InputStream常用的子类FileInputStream:文件输入流BufferedInputStream:缓冲字节输入流O......
  • 前端开发-BootStrap
    Bootstrapv3中文文档·Bootstrap是最受欢迎的HTML、CSS和JavaScript框架,用于开发响应式布局、移动设备优先的WEB项目。|Bootstrap中文网(bootcss.com) 创建引入  ......
  • 了解一下Bootstrap
    在制作页面的过程中,我发现了一些更有效率的方法。Bootstrap是一个用于快速开发Web应用程序和网站的前端框架。Bootstrap是基于HTML、CSS、JAVASCRIPT的。基本结构:Bootstrap提供了一个带有网格系统、链接样式、背景的基本结构。这将在Bootstrap基本结构部分详细讲解。......
  • 『0012』 - Solidity Types - 字符串(String Literals)
    作者:黎跃春,案例字符串可以通过""或者''来表示字符串的值,Solidity中的string字符串不像C语言一样以\0结束,比如我的微信号liyc1215这个字符串的长度就为我们所看见的字母的个数,它的长度为8。pragmasolidity^0.4.4;contractStringLiterals{string_name;//状态变量......
  • 『0015』 - Solidity Types - (Dynamically-sized byte array)、(Fixed-size byte arrays
    作者:黎跃春,大纲固定大小字节数组(Fixed-sizebytearrays)之间的转换固定大小字节数组(Fixed-sizebytearrays)转动态大小字节数组(Dynamically-sizedbytearray)固定大小字节数组(Fixed-sizebytearrays)不能直接转换为string动态大小字节数组(Dynamically-sizedbytearray)转stri......
  • 『0018』 - Solidity Types - Solidity 结构体(Structs)
    作者:黎跃春,自定义结构体pragmasolidity^0.4.4;contractStudents{structPerson{uintage;uintstuID;stringname;}}Person就是我们自定义的一个新的结构体类型,结构体里面可以存放任意类型的值。初始化一个结构体初始化一个storage......
  • Arrays.stream().boxed()的使用
    Arrays.stream().boxed()的使用0.写在前面1.Arrays.stream()的使用算法:代码:输出结果:2.boxed()的使用boxed()方法实现在原始类型「primitives」和盒式类型「boxed」之间转换数组3.参考0.写在前面文章翻译自以下本文的最后链接1.Arrays.stream()的使用算法:获取要转换的数组。使......
  • golang中的substring
    发现golangstrings包中没有javastring.substring方法,于是尝试了下:想要在java中实现提取“世”的需求//java代码Strings="Hello,世界";System.out.println(s.substring(7,8));//世在golang中尝试这样://golang代码s1:="Hello,世界"fmt.Println(s1[7:8])//�因为......