Rust-资料型别-字元.字串

Rust的char型别是最基本的字母型别,用单引号包起来

let a = 'b';

Rust的字串分两种

  • str
  • String

严格来讲Rust在核心语言中只有一个字串型别,哪就是切片字串(&str)是不可变的(stack)

String则是Rust标准函式库提供的型别,String是可变(Heap)

// &str型别
let str_var = "字串";

// String型别
let string_var = str_var.to_string();
// String型别
let string_var = String::from("字串");

索引字串切片

因为字串是使用 UTF-8 编码,每个字符可能有多个位元组所以用字串索引会容易出现错误

let str_var = "安安";

println!("{}", &str_var[0..1]);

会出现错误
thread 'main' panicked at 'byte index 1 is not a char boundary; it is inside '安' (bytes 0..3) of `安安`'

比较好得做法透过as_bytes或是chars方法来取直

let str_var = "安安你好啊";

for b in str_var.as_bytes() {
    print!("{}, ", b);
}

for c in str_var.chars() {
    print!("{}, ", c);
}

输出
229, 174, 137, 229, 174, 137, 228, 189, 160, 229, 165, 189, 229, 149, 138,
安, 安, 你, 好, 啊,

字串相加,这边会使用到&借用,後面会讲解

let string1_var = String::from("安安");
let string2_var = String::from("你好啊");

println!("{}", string1_var + &string2_var);

输出
安安你好啊

Rust没有提供型别判断的方法,如果想要知道变数是什麽型别可以利用编译时的错来查看

// char型别
let char_var = 'c';
char_var.not_found;

出现错误
`char` is a primitive type and therefore doesn't have fields

// &str型别
let str_var = "str";
str_var.not_found;

出现错误
no field `not_found` on type `&str`

<<:  Day8-安装Kind要在docker之後

>>:  [ Day 01 ] 开赛和那些期许

ASP.NET MVC 从入门到放弃(Day22)-MVC新增资料介绍

接下来讲讲新增 部分... Controller public ActionResult Creat...

人脸辨识-day28 模型训练

实作完可以侦测人脸的哈尔特徵後,在将所有的训练资料不需要的背景利用人脸侦测的框给剪裁掉。以下图为例 ...

Chapter3 - canvas动画续篇 加入Z轴也能使2D画面产生立体的空间感

https://jerry-the-potato.github.io/ChapterX-demo/ ...

Day04 - 事件、状态转移

我们必须记忆一个主体的状态,以便系统後续进行判断、操作或其他使用,为此我们也在 Day 03 厘清「...

WordPress 如何关闭 XML-RPC 服务,避免资安攻击风险

为了提升 WordPress 站台安全性,我安装了防火墙及防毒外挂 Wordfence,此外挂提供了...