
Why writing a linked list in Rusts is basically impossible - rusbus
https://rcoh.me/posts/rust-linked-list-basically-impossible/
======
meh2frdf
Aaaaaand there goes me interest in learning rust ;)

The author is quite open about his lack of expertise with Rust, would be good
for someone more knowledgeable to explain the right approach. Also does the
benefits actually outweight the cost?

~~~
steveklabnik
Rust is very different in other languages. In many languages, implementing
data structures is easy, and so it's how you start out. In Rust, it's not
easy. But luckily, you don't have to write them yourself! That's what
crates.io is for. Or, if you want a basic linked list, there's one in the
standard library.

That said, linked lists are almost never what you want anyway, so it's not
particularly relevant to most Rust programmers. And when you do, you use one
of the ones that have already been implemented and move on with life.

The "Too many linked lists" book linked from the post goes into this in great
detail.

~~~
hmm_really
Well having written a lot of C and a lot of data structures, particular in low
resource devices, I'm well aware of the details needed to do so. I suspect
many others are in the same camp. Pointers are hard, however after 10 years of
practice there not so bad ;)

I feel that saying ohh you should never need to write your own pointer chain
(linked list, trees etc) is a bit too sweeping and doesn't match my
experience.

"not particularly relevant to most Rust programmers" begs the question is
their less of an overlap from C programmers and Rust programmers than is being
generally touted?

~~~
steveklabnik
> however after 10 years of practice there not so bad ;)

I know; I've been using them for over 20 years.

If you're that confident in your knowledge here, then using Rust wouldn't be a
problem for you: you can go the unsafe route and just do the same thing you'd
do in C.

> doesn't match my experience.

Sure. Your experience hasn't been in Rust. That is, when you have generics,
and a good package manager, there's virtually no reason to write your own, as
you can always use one that already exists. C doesn't have those things, and
so you end up doing a lot more work yourself compared to Rust.

~~~
Accipitriform
"If you're that confident in your knowledge here, then using Rust wouldn't be
a problem for you: you can go the unsafe route and just do the same thing
you'd do in C."

That's what I didn't understand - why the author didn't just use "unsafe".
There's nothing intrinsically bad about using "unsafe", you just have to test
that code thoroughly. There's plenty of robust C code out there.

~~~
hmm_really
Okay thats the bit that I was missing, seems a reasonable compromise!

