所有权问题(不可变和可变借用的情况)
Ownership question (case with immutable and mutable borrow)
我有一个关于所有权的新手问题,我正在尝试更新 (+= 1) 最后一个字节并打印出 UTF-8 字符。
但是我对 String 进行了可变借用以更改最后一个字节,因此我无法打印它(使用不可变借用)。
Rustacean 的方法是什么?
注意:我知道我做得不对,我正在学习阶段,谢谢。
fn main() {
let s = vec![240, 159, 140, 145];
let mut s = unsafe {
String::from_utf8_unchecked(s)
};
unsafe {
let bytes = s.as_bytes_mut(); // mutable borrow occurs here
for _ in 0..7 {
println!("{}", s); // Crash here as immutable borrow occurs here
bytes[3] += 1;
}
}
println!("{}", s);
}
您可以使用 std::str::from_utf8
从 bytes
生成 &str
以将其打印为字符串。
我有一个关于所有权的新手问题,我正在尝试更新 (+= 1) 最后一个字节并打印出 UTF-8 字符。 但是我对 String 进行了可变借用以更改最后一个字节,因此我无法打印它(使用不可变借用)。 Rustacean 的方法是什么?
注意:我知道我做得不对,我正在学习阶段,谢谢。
fn main() {
let s = vec![240, 159, 140, 145];
let mut s = unsafe {
String::from_utf8_unchecked(s)
};
unsafe {
let bytes = s.as_bytes_mut(); // mutable borrow occurs here
for _ in 0..7 {
println!("{}", s); // Crash here as immutable borrow occurs here
bytes[3] += 1;
}
}
println!("{}", s);
}
您可以使用 std::str::from_utf8
从 bytes
生成 &str
以将其打印为字符串。