These are chat archives for dev-ua/rust

31st
Jan 2015
Denis Borovikov
@dborovikov
Jan 31 2015 07:46
Вы что-то путаете, стек на односвязном списке вполне реализунтся, голова это последний добавлений добавленный элемент. В pop нужно просто head присвоить хвост списка. Да собственно проблема не в этом, как стек программируется я знаю, не понятно как произвести копирование, borrow checker ругается. В методе push я его победил таки чере mem::replace.
Denis Borovikov
@dborovikov
Jan 31 2015 08:04
вот то, что я хочу сделать "в лоб": http://is.gd/5ETNz6
вполне законно ругается

<anon>:26:17: 26:22 error: cannot move out of borrowed content

<anon>:26 self.head = *tail;
^~~~~

<anon>:27:10: 27:15 error: cannot move out of borrowed content

<anon>:27 Some(*data)
^~~~~

<anon>:26:5: 26:22 error: cannot assign to self.head because it is borrowed

<anon>:26 self.head = *tail;

Denis Borovikov
@dborovikov
Jan 31 2015 08:49
вот очередная попытка реализовать: http://is.gd/hry01l
теперь error: use of collaterally moved value: (old_head:Cons).1
Ulric Wilfred
@shamansir
Jan 31 2015 11:26
да, вы правы по поводу что поторопился тогда. меня смущают присвоения в методах и memory-replace, это не очень функциональный путь и иммутабельность нарушается. возможно из push нужно возвращать новый список, если уж вы используете cons-ячейки.
Ulric Wilfred
@shamansir
Jan 31 2015 12:16
Denis Borovikov
@dborovikov
Jan 31 2015 14:36
Это учебный пример, мне интересно как работать с мутабельными структурами. С иммутабельными все понятно. Я посмотрел стандартные коллекции, там зачачстую raw указатели используются, но это если ничего не получится с обычными.