не Copy?
struct Node {
nums: [Option<Box<Node>>; 10],
}
impl Node {
fn new() -> Self {
Node {
nums: [None, None, None, None, None, None, None, None, None, None],
}
}
}
Только так?
@wafflelapkin вроде рассказывал про какой-то хак для этого
а, мб default сработает?
Default::default()?
const NONE: Option<Box<Node>> = None; nums: [NONE; 10]
А как это работает? Компилятор это развернёт в [NONE, NONE, NONE, ..], и как бы Copy нужен только в рантайме?
Нет. Просто константы по своей сути копируемы вне зависимости от типа. В константных контекстах любые вычисления детерминированы => любое вычисление константы приведёт к одному и тому же значению => можно это значение копировать. Можно так-же понимать константы как ограниченные и типизированные макросы, каждый когда вы пишите CONST её код подставляется. В случае [x; N], x повторяется, поэтому должно быть либо Copy, либо константой.
А нет какой-нибудь Option::new_none() функи?
Он не константный. Или туда даже результат константной функции нельзя?
Он константный, лул Надо const { None } или улучшения в распознавании контекста, но первое пока не в стейбле, а второе вряд ли завезут
Обсуждают сегодня