Berkus
я беру контейнер в пуле, делаю по нему слайс, потом отправляю его в канал, на той стороне его принимают, а когда он дропается - этот контейнер возвращается в пул
Berkus
вы нихуя не поняли, погодите
Berkus
Berkus
еще раз
Berkus
на этой стороне - pool.get(), slice, tx.send()
на той стороне - rx.receive(); do_stuff; Drop (back to pool)
Berkus
https://play.rust-lang.org/?gist=3940b25898e48dc4753ccd7a8149f74e&version=stable вот так может понятней?
Berkus
слайс там потому что из него я создаю пакет, этой памятью владеет пул
Денис
https://play.rust-lang.org/?gist=6ee2b640c63a3b699acdb6c102e29bc6&version=stable
Денис
он и так дропается на ресивере
Денис
ага
Денис
ясно
Денис
@berkus то есть ты хочешь отправить ссылку на объект, которые не переживает кложур, и удивляешься, почему борроу чекер ругается?
Berkus
Денис
мммммм
Loo
Денис
нет
Berkus
посмотри на структуру PktWrap
Денис
не отправляется
Berkus
Item<T>
Денис
ссылка указывает на "старый" объект, несмувленный
Berkus
и его слайс
Berkus
НУ ТАК ОБЪЯСНИТЕ МНЕ КАК ЕГО СМУВАТЬ Я С ЭТОГО И НАЧАЛ!
Loo
у тебя время жизни буффера ограничено внутри скоупа в котором ты его получил/создал
Денис
Berkus
я не ору, у меня нет тут болда
Berkus
просто у людей привычка не читать что я пишу.
Berkus
приходится всяко выделять
Loo
ты его не можешь передать по каналу так как send требует "owned" значения.
Cat
о чём он пишет?
Loo
у тебя тут 2 варианта либо передавать owned вектор свой и не ебать мозг со ссылкой
Loo
либо обернуть в Arc каконибудь
Alexander
Либо копирнуть (ссылку не открывал)
Cat
> пакет просто держит ссылку
так можно?
Berkus
https://github.com/libpnet/libpnet/blob/master/pnet_packet/src/tcp.rs.in#L301 как-то так
Berkus
Berkus
пробрасывать Arc<Vec<u8>> значит?
պլհկ
зачем слайс кидать? кидай вектор, и делай опять TcpPacket::new(..) на другой стороне
պլհկ
он ничего не делает кроме одного ифа на min length, afair
Berkus
ну там не TcpPacket, так то кидать вектор было бы наверное удобнее
Berkus
впрочем, ща еще раз попробую, в прошлый раз оно сошло с ума, может я что-то недоглядел
պլհկ
а, да, они разве не добавили owned() метод для пакетов?
պլհկ
я помню был пр
պլհկ
https://docs.rs/pnet_packet/0.21.0/pnet_packet/tcp/struct.MutableTcpPacket.html#method.owned
պլհկ
вот же
պլհկ
Пусть пул пакетом владеет
Berkus
а пул преаллоцирует сторадж
Маjко
Alexander
Qt в wasm в браузере? Это как? http://blog.qt.io/blog/2018/04/23/beta-qt-webassembly-technology-preview/
Mehul
QotW: I’ve become fearless in Rust, but it’s made me fear every other language…
This Week in Rust 231 buff.ly/2vEOALf #rustlang
պլհկ
http://aturon.github.io/2018/04/24/async-borrowing/
պլհկ
Недолго нам осталось страдать
Berkus
уии
Loo
https://github.com/withoutboats/rfcs/blob/async-await/text/0000-async_await.md#async-functions
Loo
как тебе такое роб пайк
Loo
async fn function(argument: &str) -> usize {
// ...
}
Berkus
պլհկ
Sergey
Круто
Sergey
Announcing cargo src (beta)
https://ncameron.org/blog/announcing-cargo-src-beta/
Berkus
ага, крутой тул
Anton
ozkriff🇺🇦
ozkriff🇺🇦
^ так это любая ide умеет, не? rls-vscode тот же несчастный
ozkriff🇺🇦
как самостоятельная штука cargo-src мало интересен, скорее интересно когда его смогут в docs.rs / crates.io интегрировать - я так понял что планы какие-то есть
Oleg
Ещё б генерацию диаграмм сделали, как в doxygen
Berkus
ну да, это эксплорейшен и кросс-референс тул, типа LXR для линуксового кернела
Денис
Всем привет. А подскажите по https://play.rust-lang.org/?gist=3253174fc8d749dc764df22b08685c64&version=stable
1 - Почему мы можем передать вектор, как массив в функцию largest (number_list: &[i32] - работает)? Разные типы же.
2 - for &number in number_list.iter() - что значит &number? Понятно, что number_list.iter() будет возвращать ссылку на элемент массива &i32, который потом можно превратить в элемент делая *number. Что значит & в цикле перед number?
Berkus
1. там deref coercion насколько я понимаю, вектор прикидывается слайсом если может
big
2. Потому что X, в for X in ... { } это pattern.
big
Т.е. означает что вы говорите взять из итератора элемент, который будет ссылкой (&) и то, на что указывает это ссылка вы называете number
big
вот if тоже поддерживает паттерны в виде if let
например
if let Some(x) = optional_value {
...
}
тоже самое
big
в данном случае pattern'ом будет Some(x). Вы говорите, я ожидаю получить Option::Some, и тот элемент который содержит Some назвать x
Денис