に変換する安全な方法は何ですか?メモリ内で移動することなく、ベクトルのヒープ割り当てに生涯を割り当てる方法を教えてください。Vec <T>を&[T]
私はこれを行うために見つけた最も簡単な方法は、
pub fn heap_slice<'a, T:'a>(x: Vec<T>) -> &'a [T] {
use std::mem::forget;
use std::slice::from_raw_parts;
x.shrink_to_fit();
let ptr = x.ptr();
let len = x.len();
forget(x);
unsafe{ from_raw_parts(ptr,len) };
}
である。しかし、これは一般的に眉をひそめるさSTDLIBのunsafe
外を呼び出しません。安全な方法はありますか?
私はinto_boxed_slice
とほぼ同じことをしています。しかし、&[T]
を復旧し、一旦それがBox<[T]>
になると寿命を割り当てるにはどうすればよいですか?
おかげで基本的に私はスライスをラップし、ドロップ特性を追加する必要があります!(私はTLSメッセージパケットを一緒に使用していて、一度結合したカップルKBになるようにしようとしています。簡単にスライスして内容を簡単に借りることができるので、スライスを再割り当てしたくないです。 – Valarauca
少なくとも、Box <[T]> 'を借りる方法のコード例を提供できますか? 'as_ref()'または 'borrow()'はファイルの時間割り当てを許可しません – Valarauca