impl_ {
($size:literal) => {
fn test<T>(f: impl FnMut(usize) -> T) -> [T; $size] {
// ???
}
}
}
На месте // ???, по хорошему надо написать [f(0), f(1), ..., f($size - 1)], но в реальности я не смог понять как такое реализовать.
Хотел переделать seq! макрос, чтобы он работал с экспрешенами, но наткнулся на кучу проблем (к примеру то что не получается захватить f :( )
так-же была идея сделать для маленьких размеров тупо копипастой, а для больших заполнять через цикл [MaybeUninit<T>; $size], но непонятно как вызвать drop при панике для элементов, которые вернули предыдущие методы. (catch_unwind в std, а мне бы хотелось обойтись core, а условный Guard: Drop не работает т.к. мне нужно из него этот массив потом достать, а из : Drop типа такое нельзя)
В общем если будут идеи — пишите, а то уже совсем загнался с этой проблемой
А что не так с [f(0), ... f($size-1)]?
Обсуждают сегодня