Что такое Cons()?

Пример связанного списка Rust:

enum List {
    Cons(u32, Box<List>),
    Nil
}

Что такое структура Cons()? (Это правильная структура?) Я нигде не могу найти документацию.

Ответ 1

Cons не имеет особого значения в Rust. Это только имя, которое автору учебника понравилось назвать этим вариантом перечисления. Тот же List может быть определен как:

enum List {
    Pair(u32, Box<List>),
    Nil
}

Имя Cons происходит от LISP, который использует пары (узлы связанных списков) в качестве основных строительных блоков структур данных. Вот как можно создать список 1,2,3 в CommonLisp

(cons 1 (cons 2 (cons 3 nil)))

Cons является сокращением construct, с помощью которого программисты LISP означают выделение памяти. Программы, которые выделяют много памяти, считаются Cons слишком большим.

Источники