Size: a a a

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

2020 April 07

Э

Эрик in Rust — русскоговорящее сообществo
Если функция из MIT либы, проще тупо скопипастить и поправить.
источник

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
источник

В

Вафель 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
А, с другой стороны ты можешь сделать impl Buffer для враппера и тогда никаких проблем
источник

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
На следующей неделе Леша будет QnA'ить от имени rust-experts.com

https://twitter.com/rust_analyzer/status/1247244480811581441
источник

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
источник

В

Вафель in Rust — русскоговорящее сообществo
Несколько обидно за cognitive_complexity, это неплохой знак что у llvm будут проблемы с оптимизациями
источник

p

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

Э

Эрик in Rust — русскоговорящее сообществo
Вообще, кто мешает сделать
struct Slice<T>([T])
impl<T> Buffer for Slice<T> {
 fn truncate(&mut self, n: usize) {
   self.0 = self.0[..n];
 }
}
источник

В

Вафель in Rust — русскоговорящее сообществo
Эрик
Вообще, кто мешает сделать
struct Slice<T>([T])
impl<T> Buffer for Slice<T> {
 fn truncate(&mut self, n: usize) {
   self.0 = self.0[..n];
 }
}
Тут нужен либо ref_cast крейт, либо всё же struct Slice<'a, T>(&'a [T])
источник

Э

Эрик in Rust — русскоговорящее сообществo
Нет, зачем.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Если в Buffer трейте все методы & или &mut, то не надо.
источник

Э

Эрик in Rust — русскоговорящее сообществo
А вот если fn foo(self) - то тут проблемы, да.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Или какой-нибудь fn new() -> Self
источник

Э

Эрик in Rust — русскоговорящее сообществo
Вот fn new() -> &'static Self - нормально.
источник

r

red75prime in Rust — русскоговорящее сообществo
Эрик
Или какой-нибудь fn new() -> Self
Воот. Как такую структуру создавать?
источник

В

Вафель in Rust — русскоговорящее сообществo
Эрик
Если в Buffer трейте все методы & или &mut, то не надо.
источник

В

Вафель in Rust — русскоговорящее сообществo
код не компилится
источник

A

Alik in Rust — русскоговорящее сообществo
/report
источник

Э

Эрик in Rust — русскоговорящее сообществo
А, да, действительно, &mut self это же не &mut &mut Self
источник