Во-первых, "это не работает" никогда не помогает . Очевидно, что это «не работает», иначе вы бы не обращались за помощью.
Во-вторых, предоставить код, с которым вы фактически работаете (на игровой площадке), гораздо проще, чем угадывать, где код "который не работает" должен go.
В-третьих,
let mut vecvec = Vec<Vec<T>>::new();
T
должно быть определено где-то, и оно должно что-то, что имеет смысл.
vecvec.push(number_list);
vecvec.push(char_list);
Vec<T>
означает, что все элементы ve c должны иметь одинаковый тип. Здесь у вас есть Vec<i32>
и Vec<char>
. Они не одного типа, и они не могут быть согласованы с одним и тем же типом, поэтому они не могут быть помещены в один и тот же вектор: Rust не имеет повсеместного стирания типа или типа "root". «à la Java, вы не можете просто сказать, что у вас есть вектор или векторы, и оставить их там с заполнением пробелов во время выполнения.
Это означает, что вам нужно какое-то косвенное указание, чтобы« скрыть » "Дивергенция, либо перечисление с вариантом для каждого типа ve c, который вы хотите:
enum Wrapper {
Numbers(Vec<i32>),
Chars(Vec<char>)
}
, либо черта, с помощью которой вы можете использовать объект черты .