所有权问题(不可变和可变借用的情况)

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_utf8bytes 生成 &str 以将其打印为字符串。