简体   繁体   English

如何在 Rust 结构中保留随机大小的字节数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM