Size: a a a

2021 May 01

EG

Emmanuel Goldstein in rust_offtopic
fn foo(x: usize) -> usize {
   if x == 0 { return 0 }
   let _guard = Box::new(x);
   return foo(x - 1);
}

Вот в этой странной функции нет хвостовой рекурсии, например.
источник

r

red75prime in rust_offtopic
На такой случай в расте есть ключевое слово become.
источник

TK

Traveller Kolsky in rust_offtopic
Которое не работает?
источник

EG

Emmanuel Goldstein in rust_offtopic
Была идея сделать отдельный кейворд become, который запускает дропы сразу / требует, чтобы никаких дропов на этот момент уже не оставалась
источник

EG

Emmanuel Goldstein in rust_offtopic
Но это пока висит в воздухе
источник

r

red75prime in rust_offtopic
Ага. Просто зарезервировано
источник

r

red75prime in rust_offtopic
источник

EG

Emmanuel Goldstein in rust_offtopic
Ну там не совсем правда написана, лол. box сейчас вполне используется, просто в найтли.
источник

EG

Emmanuel Goldstein in rust_offtopic
Как и macro.
источник

EG

Emmanuel Goldstein in rust_offtopic
А вот become и abstract реально просто зарезервированы
источник

EG

Emmanuel Goldstein in rust_offtopic
Они смешали две категории — кейворды для нестабильных фич и кейворды для фич, которых вообще нет
источник

П

Пух in rust_offtopic
А в стейбле Box не через кейворд создается?
источник

EG

Emmanuel Goldstein in rust_offtopic
В стейбле Box создаётся через Box::new()
источник

TK

Traveller Kolsky in rust_offtopic
Box::new
источник

EG

Emmanuel Goldstein in rust_offtopic
Кейворда box в стейбле нет
источник

r

red75prime in rust_offtopic
Reference отражает всё-таки стейбл.
источник

П

Пух in rust_offtopic
А внутри Box::new?
источник

EG

Emmanuel Goldstein in rust_offtopic
А внутри Box::new стдлиба.
источник

TK

Traveller Kolsky in rust_offtopic
box x
источник

EG

Emmanuel Goldstein in rust_offtopic
Стдлиба написана с RUSTC_BOOTSTRAP=1, она, считай, на найтли.
источник