Являются ли первые минусы упакованного списка в стеке? - PullRequest
0 голосов
/ 26 июня 2018

Я читал о типе Box и списке Cons, приведенном в этой главе:

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

Я понимаю, почему Rust не позволяет поместить еще List внутрь List (см. Листинг 15-2), и я также понимаю, как Box<List> решает проблему (см. Листинг 15-5).

Поскольку List помещается в Box, означает ли это, что в стеке будет только ПЕРВЫЙ Cons с указателем на List в куче? Как насчет оставшихся Cons? Будут ли они в стеке? Как они могут быть в стеке, когда List находится в куче? Или они в куче (это звучит не очень красиво)?

1 Ответ

0 голосов
/ 26 июня 2018

Да. Первый Cons может быть создан в стеке, но последующие связанные Cons будут выделены в куче, поскольку они перенаправляются через Box, который представляет тип, выделенный в куче. Это предполагает, что вы создаете первый Cons естественно / нормально в стеке, но вы, конечно, можете также создать его в куче через Box, и в этом случае все они будут в куче даже в первом Cons.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...