News for hackers. Stuff that matters.
Re:The struggle with Rust by readittwice on Tuesday January 24, 2017 @11:02AM (#13472402)
You could use id/vec indices, instead of directly pointing to your e.g. sucessors: "struct Node { successors: Vec<usize> }". This has the obvious disadvantage that deleting nodes is quite hard though.
Re:The struggle with Rust by mtanski on Tuesday January 24, 2017 @11:24AM (#13472681)
> This has the obvious disadvantage that deleting nodes is quite hard though

It's hard because now you're in charge of building a malloc(3) implementation. Depending how important this data structure is you might need to worry about 1. about fragmentation 2. free space managment 3. adjacency and cache effects

So you've traded on hard problem for another hard problem. Not something I'd call a win.

Re:The struggle with Rust by pcwalton on Tuesday January 24, 2017 @11:27AM (#13472717)
Just use petgraph. It manages all of this for you.
Re:The struggle with Rust by dman on Tuesday January 24, 2017 @01:31PM (#13474084)
I work on databases and I ran into similar problems implementing index data structures. While I understand petgraph solves some/all of these problems completely - it would be great if the barrier to writing trees / graphs from scratch in Rust would be lower than it is currently.
Re:The struggle with Rust by mtanski on Tuesday January 24, 2017 @02:11PM (#13474482)
Same problem. Working on an OLAP database toolkit (tried to in Rust)... writing typical database data structures is excruciating painful in Rust.

Trees, indexes (including bitmaps), buffer allocators and even just keeping state in streaming cursors (Volcano model). Are all pain in the ass in to implement.

In fact implementing a Cursor trait for like 10 different Cursor (SrcView, Join, Project, Compute, ...) became painful because each cursor struct has it's own complex lifetime params and those lifetimes were trying to leak into the main Cursor trait.

Right now I can't do that without resolving to runtime using RefCell. In my case the plans could be entirely materialized at compile time, so not really a win.

The situation won't get better until there's some kind of abstraction over lifetimes (HKT?).

Re:The struggle with Rust by readittwice on Thursday January 26, 2017 @03:51AM (#13489781)
Sure, I wouldn't recommend that solution if you have to delete single nodes a lot. But it is quite convenient if you don't need to do that.