Learning Rust the hard way - implement B-Tree Index advice?

Hello Good People
I am trying to learn Rust.
The hard way.

I have read The Rust Book now (excellent book, so a tick for RTFM for me!).
I have decided to write a simple in-memory B-Tree Index library - since my background is relational databases so I do know how B-Tree works well enough (and happy to use recursion).

I would like some general direction/approach advice re doing in the Rust idiomatic way.

I am aware of Box, Rc, RcMut and RefCell.

Given the index nodes need to be mutable and owned and manipulated in a graph-like-way (to insert/update/remove/re-balance node key contents), I would like opinions of which Rust features/structs/etc to use to implement this data structure in-memory.

I will get to on-disk persistence/serialization later, I am sure this will be another huge task to get it written in Rust idiomatic way.

Any advice appreciated from a new Rust student!

Many thanks in advance!

A good starting place for this sort of thing is Learn Rust With Entirely Too Many Linked Lists. The book steps you through creating a robust linked-list implementation using both safe and unsafe Rust, but it should be easy enough to extend the concepts to a b-tree as well.

Another resource is rust/src/liballoc/collections/btree/. The standard library source code is freely accessible and normally quite high quality.

One of the original authors of std::collections::BTreeMap wrote up a case study on it, Rust Collections Case Study: BTreeMap. It's a pretty long post, but you get to explore it in a fair amount of detail and the author is quite well renowned around here.


many thanks!

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.