Size: a a a

Rust — русскоговорящее сообществo

2020 August 26

R

Roman in Rust — русскоговорящее сообществo
Если длина каждого вложеного вектора одна, то с неглядя бери один Box<[T]>
источник

R

Roman in Rust — русскоговорящее сообществo
Сэкономишь один usize еще
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Длина внешнего вектора, в целом, тоже одна...
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Подожди, а как аллоцировать это чудо?
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Подожди, а как аллоцировать это чудо?
Vec::into_boxed_slice (:
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Только осторожно, оно реаллоцирует если size != capacity.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Casual tears
Только осторожно, оно реаллоцирует если size != capacity.
len
источник

R

Roman in Rust — русскоговорящее сообществo
Много вариантов. From<Vec<T>>, FromIterator<T>
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
А ещё можно (но не нужно) ручками аллокатор подёргать 🌚
источник

R

Roman in Rust — русскоговорящее сообществo
Если из вектора делаешь, то сразу capacity задай
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Roman
Много вариантов. From<Vec<T>>, FromIterator<T>
FromIterator дергает вектор https://doc.rust-lang.org/src/alloc/boxed.rs.html#1101-1105
источник

R

Roman in Rust — русскоговорящее сообществo
Конечно. Но он одну аллокацию сделает только, если итератор правильный хинт на размер отдаст
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Roman
Много вариантов. From<Vec<T>>, FromIterator<T>
Btw, FromIterator специализирован для TrustedLen итераторов, так что вообще шик, я недавно asm чекал :P
источник

R

Roman in Rust — русскоговорящее сообществo
Вот чтоб Arc<[T]> сделать, всегда реаллоцировать приходится. Но оно того стоит
источник

R

Roman in Rust — русскоговорящее сообществo
Потому что это сильно лучше чем Arc<Vec<_>>
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Roman
Потому что это сильно лучше чем Arc<Vec<_>>
Почему сильно?
источник

R

Roman in Rust — русскоговорящее сообществo
Потому что 1 индирекшн, а не 2
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Roman
Вот чтоб Arc<[T]> сделать, всегда реаллоцировать приходится. Но оно того стоит
Если из итераторов делать то будет просто один аллок
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Roman
Потому что 1 индирекшн, а не 2
Справедливо
источник

R

Roman in Rust — русскоговорящее сообществo
Умеет? Тогда круто
источник