Rust学习教程09 - 字符布尔元类型

Posted 孙飞 Sunface

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rust学习教程09 - 字符布尔元类型相关的知识,希望对你有一定的参考价值。

本文节选自<<Rust语言圣经>>一书
欢迎大家加入Rust编程学院,一起学习交流:
QQ群:1009730433

字符、布尔、元类型

这三个类型所处的地位比较尴尬,你说它们重要吧,在需要的时候也是不可或缺,说它们不重要吧,确实出现的身影不是很多,而且这三个类型都有一个共同点:简单,因此我们统一放在一起讲。

字符类型(char)

字符,对于没有其它编程经验的新手来说可能不太好理解(没有编程经验敢来学Rust的绝对是好汉),如果用字母来表示就很好理解了。下文我们用char来指代字符。

下面的代码展示了几个颇具异域风情的字符:

fn main() 
    let c = 'z';
    let z = 'ℤ';
    let g = '国';
    let heart_eyed_cat = '😻';

如果你从部分陈旧的语言来,可能会大喊一声:这XX叫字符?是的,在Rust语言中这些都是字符,Rust的字符不仅仅是ASCII,所有的Unicode值都可以作为Rust字符,包括中文/日文/韩文,emoji表情等等,都是合法的字符类型。Unicode 值的范围从 U+0000~U+D7FF 和 U+E000~U+10FFFF。不过“字符”并不是 Unicode 中的一个概念,所以人在直觉上对“字符”的理解和 Rust 的字符概念并不一致。

由于Unicode都是4个字节编码,因此字符类型也是占用4个字节:

fn main() 
    let x = '中';
    println!("字符'中'占用了字节的内存大小",std::mem::size_of_val(&x));

输出如下:

$ cargo run
   Compiling ...
    
字符'中'占用了4字节的内存大小

注意,我们还没开始讲字符串,但是这里提前说一下,和一些语言不同,Rust的字符只能用''来表示,""是留给字符串的

布尔(bool)

Rust 中的布尔类型有两个可能的值:truefalse。布尔值占用内存的大小为 1 个字节。布尔类型使用 bool 指定。例如:

fn main() 
    let t = true;

    let f: bool = false; // 使用类型标注,显式指定f的类型

    if f 
        println!("这是段毫无意义的代码");
    

使用布尔类型的场景主要在于控制流,例如上述代码的中的if就是其中之一。

元类型

元类型就是(),对,你没看错,就是(),唯一的值也是(),可能读者读到这里就不愿意了,你也太敷衍了吧,管这叫类型?

只能说,再不起眼的东西,都有其用途,在目前为止的学习过程中,大家已经看到过很多次fn main()函数的使用吧?那么这个函数返回什么呢?
没错就是这个元类型(),你不能说main函数无返回值,因为没有返回值的函数在Rust中是有单独的定义的:发散函数,顾名思义,无法收敛的函数.

例如常见的println!()的返回值也是()

以上是关于Rust学习教程09 - 字符布尔元类型的主要内容,如果未能解决你的问题,请参考以下文章

js正则表达式常用字符

Rust 第三章 数据类型

Python学习之旅---数据类型(数字字符窜列表元组字典布尔值)

算法leetcode|1844. 将所有数字用字符替换(rust和go)

算法leetcode|1844. 将所有数字用字符替换(rust和go)

Rust—数据类型