如何在 Rust 中创建固定大小的可变堆栈分配字符串?
How To create fixed size mutable stack allocated string in rust?
假设我知道一个变量的大小,它应该是堆栈分配的并且是字符串类型和可变的 那么我如何创建一个可变但大小固定的字符串类型变量,从而分配堆栈内存
使用 String 会给我堆分配动态长度变量
使用 str 意味着我应该在编译时本身给出值
使用字节数组可以做到,但我会失去与字符串类型相关的功能
可以用 std::str::from_utf8_mut
从 &mut [u8]
制作 &mut str
。示例:
fn main() {
// Just an example of creating byte array with valid UTF-8 contents
let mut bytes = ['a' as u8; 2];
// Type annotation is not necessary, added for clarity
let string: &mut str = std::str::from_utf8_mut(&mut bytes).unwrap();
// Now we can call methods on `string` which require `&mut str`
string[0..1].make_ascii_uppercase();
// ...and the result is observable
println!("{}", string); // prints "Aa"
}
假设我知道一个变量的大小,它应该是堆栈分配的并且是字符串类型和可变的 那么我如何创建一个可变但大小固定的字符串类型变量,从而分配堆栈内存
使用 String 会给我堆分配动态长度变量
使用 str 意味着我应该在编译时本身给出值
使用字节数组可以做到,但我会失去与字符串类型相关的功能
可以用 std::str::from_utf8_mut
从 &mut [u8]
制作 &mut str
。示例:
fn main() {
// Just an example of creating byte array with valid UTF-8 contents
let mut bytes = ['a' as u8; 2];
// Type annotation is not necessary, added for clarity
let string: &mut str = std::str::from_utf8_mut(&mut bytes).unwrap();
// Now we can call methods on `string` which require `&mut str`
string[0..1].make_ascii_uppercase();
// ...and the result is observable
println!("{}", string); // prints "Aa"
}