head: T,
tail: U,
}
fn end<T>(head: T) -> LinkedList<T,()> {
LinkedList {
head: head,
tail: (),
}
}
fn cons<T,U>(head: T, tail: LinkedList<T, U>) -> LinkedList<T, LinkedList<T, U>> {
LinkedList {
head,
tail
}
}
fn main() {
let list = cons(10, cons(20, end(1)));
println!("{:?}", list);
}
Чисто технически это позволяет делать LinkedList<i32, LinkedList<bool, ()>> (то что ты не можешь создать такое вне модуля — другой вопрос)
Обсуждают сегодня