У меня есть этот код, который я не могу скомпилировать:Как я могу объявить & [& T]] в ржавчине?
let vec1 = [1i, 2i, 3i];
let vec2 = [4i, 5i];
let v: &[&[int]] = [&vec1, &vec2];
То, что я хочу здесь ясно: я хочу, чтобы указать v содержит & [INT] элементы, то есть ссылки на массивы гетерогенных размеров. Но, как бы я ни отмечал тип v, я получаю ошибки компилятора. Вышеуказанные состояния
tst.rs:8:29: 8:34 error: mismatched types: expected `&[int, ..3]`, found `&[int, ..2]` (expected array, found array)
tst.rs:8 let v: &[&[int]] = [&vec1, &vec2];
^~~~~
tst.rs:8:21: 8:35 error: mismatched types: expected `&[&[int]]`, found `[&[int, ..3], ..2]` (expected &-ptr, found array)
tst.rs:8 let v: &[&[int]] = [&vec1, &vec2];
^~~~~~~~~~~~~~
Какое здесь решение?
у вас просто отсутствует '&'. 'let v: & [& [int]] = & [& vec1, &vec2];' (обратите внимание на & after = =). Однако, в зависимости от того, как вы планируете использовать v, вы можете столкнуться с проблемами со временем жизни. –