目 录CONTENT

文章目录

Rust基本数据类型-bool、char、元组

Sir丶雨轩
2024-11-14 / 0 评论 / 0 点赞 / 2 阅读 / 0 字 / 正在检测是否收录...

bool类型

  • Rust的布尔类型bool具有此类型常用的两个值 true和false。 ==、< 等比较运算会生成bool结果,比如 2 < 5的值为true
    • Rust可以把bool转为整型,但是无法从数值或别的类型转到bool
      assest_eq!(false as i32,0);
      assest_eq!(true as i32,1);
      

字符类型

  • Rust的字符类型char会以32位(4个字节)值表示单个Unicode字符。
  • Rust会对单独的字符使用char类型,但对字符串和文本流使用UTF-8编码。因此String会将其文本表示为UTF-8字节序列,而不是字符数组
    • 英文字符:1 字节(ASCII)。
    • 中文字符:3 字节(大多数汉字)。
    • 表情符号:4 字节(高 Unicode 代码点字符)
  • 可以使用十六进制写出字符的Unicode码点
    • 例如 "\x2A" = *
    • '\u{HHHHHH}'
    • '\u{CA0}' = ಠ
  • Rust不会在char和任何其他类型之间进行隐式转换。可以使用as转换符将char转换为整型,对于小于32位的类型,该字符串的高位会被截断
    assert_eq!('*' as i32, 42);
    assert_eq!('ಠ' as u16, 0xca0);
    assert_eq!('ಠ' as i8, -0x60); // U+0CA0截断到8位,有符号
    

元组

  • 元组不等于数组,元组只允许使用常量作为索引比如 t.0、t.1 不允许使用t.i 或 t[i] 的形式来获取第i个元素

  • Rust代码通常会使用元组类型从一个函数返回多个值,例如字符串切片会将字符串切成两半返回,函数签名如下

    fn split_at(&self, mid: usize) -> (&str, &str);
    
  • 返回类型 (&str, &str) 是两个字符串切片构成的元组。可以用模式匹配语法将返回值的每个元素赋值给不同的变量:

    let text = "I see the eigenvalue in thine eye";
     let (head, tail) = text.split_at(21);
     assert_eq!(head, "I see the eigenvalue ");
     assert_eq!(tail, "in thine eye");
    
  • 这样比其等效写法更易读:

    let text = "I see the eigenvalue in thine eye";
    let temp = text.split_at(21);
    let head = temp.0;
    let tail = temp.1;
    assert_eq!(head, "I see the eigenvalue ");
    assert_eq!(tail, "in thine eye");
    
  • 另一种常用的元组类型是零元组 ()。传统上,这叫作单元类型,因为此类型只有一个值,写作 ()。

    • 例如没有返回值的函数 返回 ()
  • 如果你愿意,可以在元组的最后一个元素之后跟上一个逗号:类型(&str, i32,) 和 (&str, i32) 是等效的

  • 为了保持一致性,甚至有包含单个值的元组。字面量 ("lonelyhearts",) 就是一个包含单个字符串的元组,它的类型是(&str,)。在这里,值后面的逗号是必需的,以用于区分单值元组和简单的括号表达式。

0
广告 广告

评论区