【发布时间】:2019-03-31 02:32:41
【问题描述】:
使用this 回答我正在尝试编写一个将 128 位整数转换为基数 62 数字的 Rust 函数。
fn encode_as_chars(mut integer: u128) {
let alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".as_bytes();
let base: u128 = 62;
let mut encoded: String;
while integer != 0 {
encoded = encoded.push(alphabet[(integer % base) as usize] as char);
integer /= base;
}
encoded;
}
我使用as_bytes() 通过索引访问字母表中的字符并将字节转换回字符,打算将字符推送到String::push 的编码字符串。但是编译器对此抱怨,返回错误
error[E0308]: mismatched types
--> src/lib.rs:7:19
|
7 | encoded = encoded.push(alphabet[(integer % base) as usize] as char);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `std::string::String`, found ()
|
= note: expected type `std::string::String`
found type `()`
我尝试使用to_owned() 为字符显式分配内存:
let character: char = (alphabet[(integer % base) as usize] as char).to_owned();
encoded = encoded.push( character );
但这返回了同样的错误。
为什么在推送到字符串时,已转换为 char 的字节似乎没有正确的类型?
【问题讨论】:
-
play.rust-lang.org/…,你看书了吗?