Size: a a a

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

2020 October 06

Э

Эрик in Rust — русскоговорящее сообществo
Чтобы ускорить компиляцию большой функции из макроса, есть ли разница между кложурами и функциями?
источник

Э

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

Z

Zymlex (Юрий) in Rust — русскоговорящее сообществo
Подскажите, нет ли простого способа вызова функции из другого своего процесса? Как IPC, но более "прямым" путем.
источник

N

NF in Rust — русскоговорящее сообществo
Ниуя не понимаю
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Либо RPC, либо игры с shared memory
источник

Э

Эрик in Rust — русскоговорящее сообществo
Почему у меня макрос не съедает tt, хотя я его завернул в скобки?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Эрик
Почему у меня макрос не съедает tt, хотя я его завернул в скобки?
покаж код
источник

Э

Эрик in Rust — русскоговорящее сообществo
вафель 🧇
покаж код
Не могу. Пойду mre запилю. Если сожрёт, то значит в макросе где-то проблема.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Эрик
Не могу. Пойду mre запилю. Если сожрёт, то значит в макросе где-то проблема.
Я думаю ты забыл $ где-то
источник

Э

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

Э

Эрик in Rust — русскоговорящее сообществo
А, блет, я добавил итем перед tt в макросе, а в месте использования макроса — забыл.
источник

K

Kitsu in Rust — русскоговорящее сообществo
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=04c778c4f980ea4a154178d31fa254a8
Подскажите пж почему компилятор (или я) такой глупенький и второй блок не компилируется? Ну и как исправить (желательно читабельно)
источник

K

Kitsu in Rust — русскоговорящее сообществo
Явный скоуп+биндинг в if-let, к примеру, работает, но как-то хреново выглядит:
if let Some(v) = {
   let x = t.borrow().x.as_ref().map(Rc::clone);
   x
} {
   t = v;
};
источник

Э

Эрик in Rust — русскоговорящее сообществo
Kitsu
Явный скоуп+биндинг в if-let, к примеру, работает, но как-то хреново выглядит:
if let Some(v) = {
   let x = t.borrow().x.as_ref().map(Rc::clone);
   x
} {
   t = v;
};
Сложныа.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Кстати, зачем asref  и мап, если можно просто .clone() сделать?
источник

K

Kitsu in Rust — русскоговорящее сообществo
Ну в общем t.borrow() борроувит t (простите за каламбур), а далее заборовленное значение клонится, читай боровинг не нужен. Но компилятор чего-то не отпускает его до конца if-let блока
источник

K

Kitsu in Rust — русскоговорящее сообществo
Эрик
Кстати, зачем asref  и мап, если можно просто .clone() сделать?
Я вначале предположил что клонится не Rc (а например реф?), но можно и так, да
источник

Э

Эрик in Rust — русскоговорящее сообществo
if let Some(v) = unsafe { &*t.as_ptr() }.x.clone() {
t = v;
}

Ныа.
источник

K

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

Э

Эрик in Rust — русскоговорящее сообществo
Kitsu
да, так гораздо лучше
Но это UB может быть, потому что борровим-то без проверок.
источник