Size: a a a

2020 April 04

PK

Pavel Kvasnikov in rust_offtopic
Пока что непонятна суть, связанный список нужен для быстрой вставки, а раз он иммутабилен то вставлять нельзя.
источник

SP

Stanislav Popov in rust_offtopic
ох ну почему кому то не похрен на перфоманс когда видно что все летает
источник

DS

Doge Shibu in rust_offtopic
Pavel Kvasnikov
Пока что непонятна суть, связанный список нужен для быстрой вставки, а раз он иммутабилен то вставлять нельзя.
Ты вставляешь через Cons
источник

DS

Doge Shibu in rust_offtopic
Просто создаешь, Cons, где head - новый элемент, а tail - старый список
источник

p

polunin.ai in rust_offtopic
Doge Shibu
enum List<A> {
   Nil, Cons { head: A, tail: Arc<List<A>> }
}

Тебе нужен Arc или Rc
зачем Rc?
источник

DS

Doge Shibu in rust_offtopic
(Но на расте всё усложняется возней с лайфтаймами
источник

PK

Pavel Kvasnikov in rust_offtopic
Doge Shibu
Ты вставляешь через Cons
Если мне надо вставить между нулевым и первым элементами то после первого элемента всё дропнетя?
источник

DS

Doge Shibu in rust_offtopic
Pavel Kvasnikov
Если мне надо вставить между нулевым и первым элементами то после первого элемента всё дропнетя?
Вот поэтому это не на расте надо обьяснять. Раст усложняет это из-за отсутствия гц.
источник

r

red75prime in rust_offtopic
polunin.ai
зачем Rc?
Чтобы можно было хранить указатели на элементы, а не прыгать каждый раз от head до нужного
источник

p

polunin.ai in rust_offtopic
объясни на хаскеле
источник

p

polunin.ai in rust_offtopic
red75prime
Чтобы можно было хранить указатели на элементы, а не прыгать каждый раз от head до нужного
ссылки?
источник

PK

Pavel Kvasnikov in rust_offtopic
Doge Shibu
Вот поэтому это не на расте надо обьяснять. Раст усложняет это из-за отсутствия гц.
Если я правильно понимаю то с GC 10 операций такого вида создадут около 10 выделений памяти сразу и непонятно когда это дропнется
источник

DS

Doge Shibu in rust_offtopic
Pavel Kvasnikov
Если мне надо вставить между нулевым и первым элементами то после первого элемента всё дропнетя?
То есть на том же хаскеле добавление элемента в начало:
append :: List a -> a -> List a
append xs x = Cons x xs
источник

SP

Stanislav Popov in rust_offtopic
да не надо думать о том что это медленно пока не убедишься
источник

PK

Pavel Kvasnikov in rust_offtopic
Stanislav Popov
да не надо думать о том что это медленно пока не убедишься
Это может быть быстро, но занимать память например
источник

p

polunin.ai in rust_offtopic
больше всего меня в хаскеле умиляет вот эти вот x xs
источник

DS

Doge Shibu in rust_offtopic
Pavel Kvasnikov
Если мне надо вставить между нулевым и первым элементами то после первого элемента всё дропнетя?
В иммутабельном связном списке так не делать лучше, он не для этого создан.
источник

p

polunin.ai in rust_offtopic
как буд-то разучились давать нормальные имена переменным
источник

DS

Doge Shibu in rust_offtopic
Pavel Kvasnikov
Если я правильно понимаю то с GC 10 операций такого вида создадут около 10 выделений памяти сразу и непонятно когда это дропнется
Каждый Cons тут - это аллокация в гц, да.
источник

r

red75prime in rust_offtopic
polunin.ai
ссылки?
Если заранее создать все элементы, которые могут войти в список, то можно и ссылки.
источник