char类型
char官方手册:https://doc.rust-lang.org/beta/std/primitive.char.html
char类型是Rust的一种基本数据类型,用于存放单个unicode字符,占用4字节空间(32bit)。
在存储char类型数据时,会将其转换为UTF-8编码的数据(即Unicode代码点)进行存储。
char字面量是单引号包围的任意单个字符,例如'a'、'我'。注意:char和单字符的字符串String是不同的类型。
允许使用反斜线对某些特殊字符转义:
字符名 字节字面量
--------------------
单引号 '\''
反斜线 '\\'
换行符 '\n'
换页符 '\r'
制表符 '\t'
Rust不会自动将char类型转换为其他类型,但可以进行显式转换:
- 可使用
as将char转为各种整数类型,目标类型小于4字节时,将从高位截断 - 可使用
as将u8类型转char- 之所以不支持其他整数类型,是因为其他整数类型的值可能无法转换为char(即不在UTF-8编码表范围的整数值)
- 可使用
std::char::from_u32将u32整数类型转char,返回值Option<char>- 如果传递的u32数值不是有效的Unicode代码点,则
from_u32返回None - 否则返回
Some(c),c就是char类型的字符
- 如果传递的u32数值不是有效的Unicode代码点,则
- 可使用
std::char::from_digit(INT, BASE)将十进制的INT转换为BASE进制的char- 如果INT参数不是有效的进制数,返回None
- 如果BASE超出进制数的合理范围
[1,36],将panic - 否则返回
Some(c),c就是char类型的字符
例如:
#![allow(unused)]
fn main() {
// char -> Integer
println!("{}", '我' as i32); // 25105
println!("{}", '是' as u16); // 26159
println!("{}", '是' as u8); // 47,被截断了
// u8 -> char
println!("{}", 97u8 as char); // a
// std::char
use std::char;
println!("{}", char::from_u32(0x2764).unwrap()); // ❤
assert_eq!(char::from_u32(0x110000), None); // true
println!("{}", char::from_digit(4,10).unwrap()); // '4'
println!("{}", char::from_digit(11,16).unwrap()); // 'b'
assert_eq!(char::from_digit(11,10),None); // true
}