но вот со сравнением &str и тем более std::string::String уже не сработает. #![feature(inline_const)] const fn non_negative(x: i32) -> i32 { if x < 0 { panic!("can't be negative sry") } x } const fn non_batman(x: &str) -> &str { if x == "batman" { panic!("can't be a batman") } x } fn main() { let _x = const { non_negative(1) }; // let _y = const { non_negative(-1) }; let _z = const { non_batman("notbatman") };//error[E0015]: cannot call non-const operator in constant functions } все таки думаю что через TokenStream придется
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=fa7a6a25675d6afc2c397054f8c13e48
а можно ли как-то в методе new пометить параметры как const &str и const i32 ?(ну хотя бы что-то выполняющее эту функцию). Или придется инициализировать структуру как в case1 ? https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=068b10c80865c1257c2ef2bde0b48eda
Чем выражение инициализации из этого примера(case1) отличается от debug_assert?
в продовой сборке проверок в рантайме не будет
Ну так как в этом примере их тоже не будет. Как в дебаг так и в оптимизированной версии
поясните
я просто не очень понял из кода, что там будет работать в компайл тайме если про константы речь, то строки (не литералы), например, нельзя туда
Обсуждают сегодня