rust- 标准库 char

今天重新学习一下官方文档关于 char的部分: https://doc.rust-lang.org/std/char/index.html

0x01 char的内存占用长度

在rust中, 一个char 占用4个字节, 可以通过下面的代码来验证:

    let v = vec!['h', 'e', 'l', 'l', 'o'];
    println!("{}", v.len());
    println!("{}", v.len() * std::mem::size_of::<char>());
----
5
20

同时, 如果我们想知道char在utf中实际长度是多少呢?可以如下方法获得:

    println!("{}", 'A'.len_utf8());
    println!("{}", 'ß'.len_utf8());
    println!("{}", 'ℝ'.len_utf8());
    println!("{}", '💣'.len_utf8());
----
1
2
3
4

0x02 chars字符长度

可以看到"abc".len() 方法执行结果是返回字节长度,

   pub const fn len(&self) -> usize {
        self.as_bytes().len()
    }

但更多时候,我们希望拿到它的unicode字符个数.
应该如何实现呢?

    let cc = "love: ❤";
    println!("{}", &cc);
    println!("byte len   : {}", &cc.len());
    println!("char count : {}", &cc.chars().count());
----
love: ❤
byte len   : 9
char count : 7
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。