Rust 是否可以创建一个方框<;(T[U])>;?

Rust 是否可以创建一个方框<;(T[U])>;?,rust,Rust,问题很清楚地说明了这一点:我可以创建一个直接包含一个切片作为其字段之一的装箱元组(或任何结构)吗 该方法可用于创建框,但我想在框中直接添加一些附加数据,与切片一起 例如,下面是一种结构,我希望在不使用Vec的情况下将其装箱,而使用类似box的内容: struct ConsolidateMe{ 数据:i32, arr:Vec, } 实施合并{ fn新(n:usize)->Self{ 设mut arr=Vec::具有_容量(n); arr.resize(n,42); 巩固{ 数据:15, 啊,, }

问题很清楚地说明了这一点:我可以创建一个直接包含一个切片作为其字段之一的装箱元组(或任何结构)吗

该方法可用于创建框,但我想在框中直接添加一些附加数据,与切片一起

例如,下面是一种结构,我希望在不使用
Vec
的情况下将其装箱,而使用类似
box
的内容:

struct ConsolidateMe{
数据:i32,
arr:Vec,
}
实施合并{
fn新(n:usize)->Self{
设mut arr=Vec::具有_容量(n);
arr.resize(n,42);
巩固{
数据:15,
啊,,
}
}
}
(在我的应用程序中,我在堆上创建了许多结构,每个结构都包含一个小数组和一些其他值。这些数组有不同的大小,但在创建结构后大小不会改变。我希望这些结构被紧凑地存储,并尽可能避免额外的间接性。)

这个板条箱看起来非常合适

例如:

使用slicedst::SliceWithHeader;
#[派生(调试、克隆)]
结构MyType{
内:盒子,
}
impl MyType{
fn新建(值:&str)->Self{
让值:Vec=value.split(“”).map(|s | s.trim().parse().unwrap()).collect();
自我{
内部:SliceWithHeader::new(value.into(),values.into_iter()),
}
}
}
fn main(){
println!(“{:?}”,MyType::new(“1233”);
}

请注意,您根本无法以任何方式创建
([u8],i32)
,因为动态大小的字段必须是最后一个-。然而,您似乎想要的是一种构建
(i32[u8])
@Cerberus的方法,谢谢!我不知道这个限制,但当我考虑底层布局时,它是有意义的。我相应地更新了我的例子。很好的建议。基本上,看起来这个板条箱作者做了不安全的工作,所以我不必这么做;好极了我唯一关心的是板条箱,因此我对是否将其作为我的项目的依赖项犹豫不决。板条箱作者CAD97在官方论坛上以见解深刻而闻名,因此我个人信任他们。根据同样由CAD97和powers Rust analyzer制作的slice dst的说法,slice dst是继任者。因此,我认为这是最安全的赌注,尽管它还没有经过“战斗考验”。
struct ConsolidateMe {
    data: i32,
    arr: Vec<u8>,
}

impl ConsolidateMe {
    fn new(n: usize) -> Self {
        let mut arr = Vec::with_capacity(n);
        arr.resize(n, 42);
        ConsolidateMe {
            data: 15,
            arr,
        }
    }
}