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

server/2024/10/22 8:26:27/

文章目录

  • 一、基本使用教程
  • 二、代码演示
    • 1、代码演示
    • 2、执行结果

一、基本使用教程

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

1、字符串类型

String

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

&str

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

2、创建字符串

创建String

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

创建&str

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

3、字符串操作

索引

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

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

切片

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

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

格式化

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

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

字符串比较

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

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

4、字符串和集合

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

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

5、字符串的错误处理

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

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

6、参考链接

  • Rust官方文档
  • Rust by Example

二、代码演示

1、代码演示

rust">fn main() {// 创建String和&strlet 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 helloFinished dev [unoptimized + debuginfo] target(s) in 0.00sRunning `target\debug\hello.exe`
H
e
l
l
o
,                R                
u                
s                
t                
!                
Rust!            
Hello, World!    
All tests passed!进程已结束,退出代码为 0

http://www.ppmy.cn/server/30843.html

相关文章

数据结构与算法-单向环形链表与约瑟夫问题

1.简介 单向环形链表&#xff0c;闭合的形成一个环。 单向环形链表的一个应用场景是约瑟夫问题。 约瑟夫问题为&#xff1a;设编号为1&#xff0c;2&#xff0c;…&#xff0c;n的n个人围坐一圈&#xff0c;约定编号为k(1<k<n)的人从1开始报数&#xff0c;数到m的那个人…

mysql主从同步

在主服务器上 1.配置my.cnf [mysqld] log-binmysql-bin server-id1 #日志超过3天自动过期 expire_logs_days 30 #同步student库 binlog-do-dbstudent #不同步系统库 binlog-ignore-dbmysql #bin-log日志文件格式&#xff0c;设置为MIXED可以防止主键重复 binlog_formatmixed…

android 分区存储(沙盒存储)适配总结

目录 一、分区存储概念 1.外部存储分类 2.分区存储如何影响文件访问 二、分区适配方案 1. 应用分区存储的文件访问规定 (1).应用专属目录--私有目录 (2).共享目录文件--公有目录 2.MediaStore API介绍 3.Storage Access Framework介绍 三、所有文件访问权限 四、总结…

linux安装MySQL 8.0笔记

在Linux系统中安装MySQL 8.0的详细操作步骤如下&#xff1a; 1. 添加MySQL Yum Repository 首先&#xff0c;您需要添加MySQL的Yum仓库。这可以通过下载并安装一个RPM包来实现&#xff0c;该RPM包会将MySQL仓库添加到您的仓库列表中。 wget https://repo.mysql.com//mysql80-c…

使用hutool工具导入excel Java

Hutool是一个Java工具类库&#xff0c;它提供了一系列实用的API&#xff0c;包括操作Excel的功能。要使用Hutool导入Excel&#xff0c;你可以使用ExcelReader类。以下是一个简单的例子&#xff0c;展示了如何使用Hutool导入Excel文件&#xff1a; import cn.hutool.poi.excel.…

[1702]java旅游资源网上填报系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java旅游资源网上填报系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

堆排序以及TOP-K问题

片头 嗨&#xff01;小伙伴们&#xff0c;大家好&#xff01;今天我们来深入理解堆这种数据结构&#xff0c;分析一下堆排序以及TOP-K问题&#xff0c;准备好了吗&#xff1f;我要开始咯&#xff01; 一、堆排序 这里我们先假设要排成升序&#xff0c;也就是从左到右&#xf…

springboot整合mybatis配置多数据源(mysql/oracle)

目录 前言导入依赖坐标创建mysql/oracle数据源配置类MySQLDataSourceConfigOracleDataSourceConfig application.yml配置文件配置mysql/oracle数据源编写Mapper接口编写Book实体类编写测试类 前言 springboot整合mybatis配置多数据源&#xff0c;可以都是mysql数据源&#xff…