[英]How to keep a random-size byte array in a Rust struct?
I'm trying to do this, but it doesn't work:我正在尝试这样做,但它不起作用:
struct Pack {
data: Box<[u8]>
}
fn foo() {
let mut p = Pack {
data: Box::new(**b"Hello!")
};
p.data.set(b"Bye!");
}
I'm getting:我越来越:
error[E0614]: type `[u8; 6]` cannot be dereferenced
--> foo
|
30 | data: Box::new(**b"Hello!")
| ^^^^^^^^^^^
error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
--> foo
|
30 | data: Box::new(**b"Hello!")
| ^^^^^^^^ doesn't have a size known at compile-time
|
What is the right way to do this?这样做的正确方法是什么?
Just use a Vec
instead:只需使用
Vec
代替:
struct Pack {
data: Vec<u8>
}
fn foo() {
let mut p = Pack {
data: b"Hello!".to_vec()
};
p.data=b"Bye!".to_vec();
}
A vector is just like a array, except it's size is dynamic and you can resize it at runtime.向量就像一个数组,只是它的大小是动态的,您可以在运行时调整它的大小。 See the docs for more details.
有关更多详细信息,请参阅文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.