【发布时间】:2015-02-02 08:42:37
【问题描述】:
我有一个结构
struct Foo<'a> {
buf: [u8, ..64],
slice: &'a [u8]
}
切片应该指向结构的buf 字段。有没有办法构造这样的结构?比如:
impl<'a> Foo<'a> {
fn new() -> Foo<'a> {
Foo {
buf: [0, ..64],
slice: ???? /* I don't know what to write here */
}
}
如果我尝试执行以下操作,借用检查器会抱怨(正确),因为切片的生命周期将比结构短。
impl<'a> Foo<'a> {
fn new() -> Foo<'a> {
let buf = [0, ..64];
Foo {
buf: buf,
slice: buf.slice_from(0)
}
}
}
我意识到对于这种简单的情况,我可以保留偏移量并手动调用切片函数:
struct Foo {
buf: [u8, ..64],
slice_from: uint,
slice_to: uint
}
但是,这个问题只是对拥有数据并引用相同数据的结构的更一般用例的简化,我想知道在 Rust 中这是否可能(以安全的方式)。
【问题讨论】:
-
我问了一个类似的问题 (stackoverflow.com/questions/27092273/…),不幸的是,似乎没有安全的方法可以做到这一点。
标签: rust