在 Rust 中,如何创建由元组支持的切片?

And*_*ner 3 tuples slice rust

假设我在堆栈上有一些元组:

let a:(u8,u8,u8) = (1,2,3);
Run Code Online (Sandbox Code Playgroud)

如何创建一个切片到全部或部分?

Vla*_*eev 6

Rust 参考元组定义为具有连续布局和定义的顺序,因此您可以获取指向元组第一个元素的指针并将其转换为切片:

#![feature(tuple_indexing)]

use std::slice;

fn main() {
    let t = (1u8, 2u8, 3u8);
    let f: *const u8 = &t.0;
    let s = unsafe { slice::from_raw_buf(&f, 3) };
    println!("{}", s);  // [1, 2, 3]
}
Run Code Online (Sandbox Code Playgroud)

还有这个RFC,但它很久以前就关闭了。