Rust基本数据类型-切片

一、切片是什么,怎么用

1、切片是什么

切片并不是 Rust 独有的概念,在 Go 语言中就非常流行,它允许你引用集合部分连续的元素序列,而不是引用整个集合。

对于字符串而言,切片就是对 String 类型中某一部分的引用,它看起来像这样,记得是引用&

let s = String::from("hello world");let hello = &s[0..5];//区间是左闭右开
let world = &s[6..11];

用图来看是这样
1111
但是需要注意的是,切片取索引下标的时候,要将索引放置正确的位置上,比如


// 修复代码中的错误
fn main() {let s = String::from("中国人");let a = &s[0..2];println!("{}",a);}
   Compiling world_hello v0.1.0 (/Users/guilinhuang/Desktop/RustProject/world_hello)Finished release [optimized] target(s) in 0.21sRunning `target/release/world_hello`
thread 'main' panicked at src/main.rs:5:13:
byte index 2 is not a char boundary; it is inside '中' (bytes 0..3) of `中国人`

这是因为在字符串类型中每个汉字占用三个字节,因此没有落在边界处,也就是连 中 字都取不完整,此时程序会直接崩溃退出,如果改成
&s[0…3],则可以正常通过编译。 因此,当你需要对字符串做切片索引操作时,需要格外小心这一点。

如何正确便利这种UTF-8字符串,给几个方法

for c in "中国人".chars() {println!("{}", c);
}

在Rust中,如果是字符类型,一个字符占4个字节,要与字符串区分


fn main() {let arr: [char; 3] = ['中', '国', '人'];let slice = &arr[..2];assert!(std::mem::size_of_val(slice) == 8);
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

frp改造Windows笔记本实现家庭版免费内网穿透

文章目录 前言frp原理Windows服务端IP检验IP固定软件下载端口放行端口映射开机启动 NAS客户端端口查询软件下载端口检验穿透测试自启设置 Ubuntu客户端软件下载后台启动 后记 前言 之前一直用花生壳远程控制一个服务器,但最近内网的网络策略似乎发生了变化&#xf…

C# winfrom 超详细UI创建过程 实现双色球选号器UI界面设计过程

一、 效果展示 1. 无点击效果展示:不选中——双色球为灰色,字体也为灰色 2.点击双色器效果展示:选中——双色球为红或者蓝,字体为白色 二、 使用控件标注说明 三、界面特点介绍 双色球代码控制生成---------由于红色33个球&…

24位AD分辨率、256Ksps*16通道国产数据采集卡、uV级采集、支持IEPE

24位AD分辨率、256Ksps*16通道、uV级采集、USB数据传输、支持IEPE、C、LABVIEW、MATLAB、Python等多编程语言,提供例程,支持二次开发。 XM7016-以太网采集卡 XM7016是一款以太网型高速数据采集卡,具有16通道真差分输入,24位分辨率…

230基于matlab的布谷鸟(COA)多目标优化算法

基于matlab的布谷鸟(COA)多目标优化算法,以 满意度、成本、时间、质量为目标的多目标优化求解代码。程序已调通,可直接运行。 230 matlab 布谷鸟(COA)多目标优化 - 小红书 (xiaohongshu.com)

进程和计划任务管理

目录 一、程序和进程的关系 程序 进程 线程 进程和线程的关系 二、查看进程信息ps ps 命令——查看静态的进程统计信息 方法一:ps aux 方法二:ps -elf top 命令——查看进程动态信息 系统查看命令总结 查看进程信息pgrep 查看进程树 以树的结…

上位机工作感想-从C#到Qt的转变-1

0.前言 接触Qt开发也有一年多的时间了,还记得去年初从杭州回合肥时,刚来公司面临的几个问题: 1.C#转上位机的迷茫2.新公司管理模式的差异3.试用期的各种紧急任务。 当时也是加班加点学习C和Qt的基础知识,做了两个考核项目后&am…

【大模型应用极简开发入门(2)】GPT模型简史:从GPT-1到GPT-4:从小数据量的微调到大数据量的强化学习不断优化模型

文章目录 一. GPT-1:无监督与微调1. 在GPT-1之前的监督学习的问题2. GPT-1中新的学习过程-无监督的预训练3. 复杂任务下的微调4. GPT-1为更强大的模型铺平了道路 二. GPT-2:context learning1. 核心思想:context learning2. GPT-2的数据集 三…

maven报orace,jdbc错误,并出现大量红色波浪线Unresolved dependency

由于oracle的限制,一般我们是无法通过maven直接下载oracle的驱动包的,这就可能导致其余的包出现红色波浪线,解决方法如下 1.新建一个文件夹,并将oracle驱动包放在这个新建的文件夹下,注意不要讲这个oracle包放在maven本…

浏览器数据找回

网站上分享的文章应该都是个人的心血,对于一些操作问题导致心血丢失真的很奔溃,终于找到一个弥补的办法,csdn的文章谷歌浏览器亲测有效,理论上其他浏览器的其他网站应该也可以,适用以下场景 把博客编辑当成了编写新博…

Vue3+TS版本Uniapp:项目前置操作

作者:前端小王hs 阿里云社区博客专家/清华大学出版社签约作者✍/CSDN百万访问博主/B站千粉前端up主 环境:使用vscode进行开发 如果一开始是使用的HbuilderX,请看hbuilderX创建的uniapp项目转移到vscode 为什么选择vscode?有更好…

温湿度LCD显示并上传服务器

项目需求 通过温湿度传感器将值传到LCD1602,并实时通过蓝牙透传到手机。 硬件介绍 温湿度传感器 DHT11温湿度传感器 DHT11_温湿度传感器数据格式-CSDN博客 LCD1602LCD1602-CSDN博客 HC-01 继电器模块 硬件接线 LCD1602 D0~D7 --> A0~A7VDD, A --> 5v…

(避雷指引:管理页面超时问题)windows下载安装RabbitMQ

一、背景: 学习RabbitMQ过程中,由于个人电脑性能问题,直接装在windows去使用RabbitMQ,根据各大网友教程,去下载安装完之后,使用web端进行简单的入门操作时,总是一直提示超时,要么容…