let guard = $lock.lock().await;
guard.$f
}};
}
хочу чтобы
lock!(name, method(&arg))
превращалось в
{
let guard = name.lock().await;
guard.method(&arg)
}
так можно вообще сделать, "склеить"?
$f:ident, $($args:ident),* что-то такое должно быть в аргументах макро
чтобы анлок автоматически был?
Вроде вот тут похожее делается https://docs.rs/nom-methods/0.2.0/src/nom_methods/methods.rs.html#163-174
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=d9993f3d45eaf41560c012c2d5a22bf6
Да, я хочу быть уверенным что гвард дропается после этого выражения. Не знаю, как по-другому это выразить
можно руками в макросе анлок вызвать или дропнуть лок
лучше обернуть в функцию с передачи кложи тогда
ну тут как раз дроп лока происходит засчет области видимости (блока {})
это да, но макрос будет менее эстетическим
я имею в виду, что зачем передавать замыкание в макрос и ухудшать читаемость кода тем самым, если можно просто анлок вызвать самому в конце макроса
Обсуждают сегодня