Size: a a a

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

2020 April 06

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Eva Baka
да нет, они имеют определенный размер всегда
И какой размер у str?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Eva Baka
да нет, они имеют определенный размер всегда
Неа, они имеют "неизвестный" размер. Это все равно что "безразмерный".
источник

В

Вафель in Rust — русскоговорящее сообществo
Mikail Bagishov
dyn Debug
[u8]
Ещё !
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Вафель
Ещё !
Его размер 0, к сожалению.
Но да, если бы его размер был честной -inf...
источник

В

Вафель in Rust — русскоговорящее сообществo
Mikail Bagishov
Его размер 0, к сожалению.
Но да, если бы его размер был честной -inf...
Это просто size_of врёт )
источник

p

polunin.ai in Rust — русскоговорящее сообществo
мне нужно сделать с вектором следующие операции:
1. снизить длину с M до N.
2. Сделать операцию с вектором.
3. Вернуть длину с N до M.
есть более гуманные способы чем
unsafe { vec.set_len(m); }
do_op(&mut vec);
unsafe { vec.set_len(n); }
?
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
&mut vec[..m] ?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
нет, мне нужно передать именно вектор в do_op
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
do_op ты пишешь? Зачем там мутабельный вектор?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
нет, не я. это функция из либы.
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Она туда push_back делает?
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Ладно, странные запросы, крч
источник

p

polunin.ai in Rust — русскоговорящее сообществo
нет, она делает [0,1,2,3,4] => [5,6,7,8] (условно)
источник

p

polunin.ai in Rust — русскоговорящее сообществo
ладно, я просто тогда скопирую код из функции do_op в свою функцию
источник
2020 April 07

ID

Ivan Dubrov in Rust — русскоговорящее сообществo
Если либа меняет длину (например, делает .push`), то код некорретен. Если же нет, то почему либа не может брать `&mut [T] вместо &mut Vec<T>?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Там несовсем &mut Vec<T>. Там &mut impl Buffer. А он реализован только для Vec<T>
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Ivan Dubrov
Если либа меняет длину (например, делает .push`), то код некорретен. Если же нет, то почему либа не может брать `&mut [T] вместо &mut Vec<T>?
Она делает truncate()
источник

r

rogday in Rust — русскоговорящее сообществo
polunin.ai
Она делает truncate()
N-M большое?
источник

A

Adv0cat in Rust — русскоговорящее сообществo
polunin.ai
мне нужно сделать с вектором следующие операции:
1. снизить длину с M до N.
2. Сделать операцию с вектором.
3. Вернуть длину с N до M.
есть более гуманные способы чем
unsafe { vec.set_len(m); }
do_op(&mut vec);
unsafe { vec.set_len(n); }
?
Звучит как что-то не правильное
источник

Э

Эрик in Rust — русскоговорящее сообществo
polunin.ai
Она делает truncate()
Если это Vec<impl Copy>, то ещё туда-сюда, потому что Copy не дропаются. Если это просто Vec<T>, то это UB, потому что truncate вызывает ptr::drop_in_place().
источник