amarao: (Default)
amarao ([personal profile] amarao) wrote2022-04-29 09:36 pm
Entry tags:

The most hilarious Rust problem

Задачка на leetcode: To detect if list has a cycle.

Для Rust этой проблемы нет. В буквальном и переносном смысле. В Rust'е не может быть канонического списка с циклом, потому что если A владеет B, а B владеет A, то вы просто не можете такой список передать по значению, потому что в таком цикле все владельцы заняты. Более того, если A->B->C->B..., то вы не можете такой список сделать, потому что второго владельца у B не может быть.

Понятно, что в районе unsafe rust можно и не такого накрутить, и есть Rc, но как каноический список вида Option<Box<Node>> с циклами в Rust не возможен.