Size: a a a

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

2020 December 07

MV

Mikhail Voronov in Rust — русскоговорящее сообществo
polunin.ai
сделай cargo expand и посмотри, по идеи он сам вставляет проверку :\
нет
источник

a

antuan in Rust — русскоговорящее сообществo
folex
ну вот там есть log_enabled!, его руками вставлять каждый раз как-то не хочется. Хочется сразу же написать свой макрос для такого паттерна
а что бы этот макрос делал? и как бы выглядел?
log_for_level!(log::DEBUG, "{}", some_func()) 

типа того? а внутри бы делал то же, что в исходном варианте?
источник

MV

Mikhail Voronov in Rust — русскоговорящее сообществo
Kitsu
он сам проверяет уровень логов же
да, но его нужно каждый раз писать самому
источник

f

folex in Rust — русскоговорящее сообществo
antuan
а что бы этот макрос делал? и как бы выглядел?
log_for_level!(log::DEBUG, "{}", some_func()) 

типа того? а внутри бы делал то же, что в исходном варианте?
В самом базовом случае даже some_func() не нужен.
источник

MV

Mikhail Voronov in Rust — русскоговорящее сообществo
antuan
а что бы этот макрос делал? и как бы выглядел?
log_for_level!(log::DEBUG, "{}", some_func()) 

типа того? а внутри бы делал то же, что в исходном варианте?
log::optimized_info!() - внутри то же, что и в обычном log::info!
источник

K

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

f

folex in Rust — русскоговорящее сообществo
можно было бы сделать log::expensive::info!("{}", something_huge), и под капотом оно бы вызывало Display только если log_enabled
источник

f

folex in Rust — русскоговорящее сообществo
а, и правда! Я слепой, значит :(
источник

MV

Mikhail Voronov in Rust — русскоговорящее сообществo
хм, да, мы не туда посмотрели(
источник

MV

Mikhail Voronov in Rust — русскоговорящее сообществo
спасибо
источник

f

folex in Rust — русскоговорящее сообществo
спасибо :)
источник

K

Kitsu in Rust — русскоговорящее сообществo
Ага, если что там есть compile-time флаги, если нужно точно убрать вычисления жирных выражений для логов
источник

f

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

Oℕ

Oleg ℕizhnik in Rust — русскоговорящее сообществo
Mikail Bagishov
Неуежели так сложно отсортивароть руками символы и пронумеровать char-ами?
Символов больше, чем charов
источник

Oℕ

Oleg ℕizhnik in Rust — русскоговорящее сообществo
Алфавит выглядит примерно как
#[derive(Eq, Ord, PartialOrd, PartialEq)]
enum TreeSymbol<A>{
   Begin, End, Val(A)
}
источник

Oℕ

Oleg ℕizhnik in Rust — русскоговорящее сообществo
Собственно, суффиксный массив + ауксиллири нужны, чтобы общие поддеревья находить
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
folex
А какой общепринятый способ вставлять log_enabled! в коде? Руками? Или есть полезный макрос, который сам делает

if log_enabled!(log::DEBUG) {
       let x = some_expensive_computation();
       debug!("x.x = {}, x.y = {}", x.x, x.y);
   }

?
очевидно если оно принимает объект то объект должен быть где-то посчитан. Посмотри, Есть ли там вариант передавать лямбду параметром
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
или сам макрос напиши
источник

K

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

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
folex
А какой общепринятый способ вставлять log_enabled! в коде? Руками? Или есть полезный макрос, который сам делает

if log_enabled!(log::DEBUG) {
       let x = some_expensive_computation();
       debug!("x.x = {}, x.y = {}", x.x, x.y);
   }

?
вопрос в том, expensive_computation или тяжелый Display/Debug
источник