54

这个问题与 Rust 的预发布版本有关。 这个年轻的问题是相似的。


我试图打印一个符号println

fn main() {
    println!('c');
}

但我得到了下一个错误:

$ rustc pdst.rs
pdst.rs:2:16: 2:19 error: mismatched types: expected `&str` but found `char` (expected &str but found char)
pdst.rs:2     println!('c');
                          ^~~
error: aborting due to previous error

如何将字符转换为字符串?

直接类型转换不起作用:

let text:str = 'c';
let text:&str = 'c';

它返回:

pdst.rs:7:13: 7:16 error: bare `str` is not a type
pdst.rs:7     let text:str = 'c';
                       ^~~
pdst.rs:7:19: 7:22 error: mismatched types: expected `~str` but found `char` (expected ~str but found char)
pdst.rs:7     let text:str = 'c';
                             ^~~
pdst.rs:8:20: 8:23 error: mismatched types: expected `&str` but found `char` (expected &str but found char)
pdst.rs:8     let text:&str = 'c';
                                  ^~~
4

3 回答 3

77

使用char::to_string,它来自ToStringtrait

fn main() {
    let string = 'c'.to_string();
    // or
    println!("{}", 'c');
}
于 2013-04-28T20:55:05.000 回答
20

您现在可以使用c.to_string(), wherec是您的类型变量char

于 2015-01-25T12:56:39.400 回答
9

使用.to_string()String在堆上分配。通常这不是任何问题,但如果你想避免这种情况并想&str直接获得切片,你可以选择使用

let mut tmp = [0u8; 4];
let your_string = c.encode_utf8(&mut tmp);
于 2021-06-09T05:42:24.413 回答