Rust是否具有Python的unichr()函数?

use*_*868 9 rust

Python具有unichr()(或chr()在Python 3中)函数,该函数采用整数并返回具有该数字的Unicode代码点的字符.Rust有相同的功能吗?

Vla*_*eev 14

当然,虽然它是一个内置的运营商as:

let c: char = 97 as char;
println!("{}", c);   // prints "a"
Run Code Online (Sandbox Code Playgroud)

请注意,as运算符仅适用于u8数字,否则会导致编译错误:

let c: char = 97u32 as char;  // error: only `u8` can be cast as `char`, not `u32`
Run Code Online (Sandbox Code Playgroud)

如果您需要一个字符串(以完全模拟Python函数),请使用to_string():

let s: String = (97 as char).to_string();
Run Code Online (Sandbox Code Playgroud)

还有char::from_u32功能:

use std::char;
let c: Option<char> = char::from_u32(97);
Run Code Online (Sandbox Code Playgroud)

它返回一个Option<char>因为并非每个数字都是有效的Unicode代码点 - 唯一有效的数字是0x0000到0xD7FF,从0xE000到0x10FFFF.此函数适用于一组较大的值,as char并且可以转换大于一个字节的数字,从而可以访问整个Unicode代码点.

在Playground上编了一组例子.

  • 它工作不正确 - 它将`0xd801`解释为`u8`,将值包装为`1u8`并将其转换为`char`.[这里](http://is.gd/mI5wme)是一个演示. (2认同)