What is Cons()?

rust

Solution

`Cons` does not have a special meaning in Rust. It is only the name that the author of the tutorial chose to call that variant of the enum. The same `List` could have been defined as:

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

The name `cons` comes from the Lisp family of programming languages where pairs (nodes of linked lists) are used as the fundamental building blocks of data structures. Here is one way to create the 1,2,3 list in Common Lisp:

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

`cons` is a shorthand of `construct` by which Lisp programmers mean to allocate memory. Programs that allocate lots of memory are said to be `cons`ing too much.

Sources

- cons - wikipedia

- Marijn Haverbeke's presentation on JS performance

Problem

The Rust tutorial example of a linked list is: ``` enum List { Cons(u32, Box<List>), Nil } ``` What exactly is the `Cons()` struct? (It is a struct right?) I can't find any documentation on this anywhere.

Original source