私は小さな文字列の最適化とカスタムString
様構造体のナイーブな実装を構築しようとしていました。今、労働組合が安定ルーストに許可されていることを、私は次のコードを思い付いた:安定した錆に生の可変ポインタをどのように割り当てることができますか?
struct Large {
capacity: usize,
buffer: *mut u8,
}
struct Small([u8; 16]);
union Container {
large: Large,
small: Small,
}
struct MyString {
len: usize,
container: Container,
}
私はどのよう*mut u8
を割り当てるための方法を見つけるように見えることはできません。安定した錆で行うことは可能ですか? alloc::heap
を使用するように見えますが、夜間にのみ利用できます。 Box::into_raw()
について
FWIWでは、 'String'自体が公開する特定のメソッドのために、' SSO 'を使用することはできません。あなたは完全なAPIを複製することはできませんが、うまくいけばそれがあなたのユースケースを妨げることはありません。 – Shepmaster