2015-05-29 128 views

回答

13

當然,儘管它是一個內置的操作as

let c: char = 97 as char; 
println!("{}", c); // prints "a" 

注意as操作僅適用於u8數字,別的東西會導致編譯錯誤:

let c: char = 97u32 as char; // error: only `u8` can be cast as `char`, not `u32` 

如果您需要一個字符串(以完全模擬Python函數),請使用to_string()

let s: String = (97 as char).to_string(); 

也有char::from_u32功能:

use std::char; 
let c: Option<char> = char::from_u32(97); 

,因爲並非每一個數字是一個有效的Unicode代碼點返回Option<char> - 唯一有效的數字是0x0000到0xD7FF和0xE000至0x10FFFF之間。此函數適用於比as char更大的一組值,並且可以轉換大於一個字節的數字,從而使您可以訪問整個Unicode代碼點範圍。我編了一個set of examples on the Playground

+0

有趣的是'讓c4 = 0xd801作爲字符; println!(「{:?}」,c4);'有警告。 –

+2

它工作不正確 - 它將'0xd801'解釋爲'u8',將值包裝爲'1u8'並將其轉換爲'char'。 [Here](http://is.gd/mI5wme)是一個演示。 –

+0

對,我只是說它會發出警告並返回一個值。 –

相關問題