Rateless invertable bloom lookup tables
This is an rust implementation of https://arxiv.org/abs/2402.02668
It aims to be efficient.
https://crates.io/crates/do-riblt The usage is explained in an example.
The entry to using this crate is the Encoder struct although you have to implement Symbol for your data first.
let set: = from;
let encoder = new;
This implementation assumes that every T gets a unique representation in bytes.
This should be logical as we need to parse them later.
Note that this trait does not account for serializing and deserializing errors. You need to account for that yourself...
Now you can create an infinite amount of symbols to send to a remote:
let symbol = encoder.next_symbol;
On the receiving side you create a decoder and feed it the symbols from the encoder:
let set = from;
let mut decoder = new;
Feeding new symbols:
let = decoder.next_symbol;
done tells if we need to peel more items by receiving more symbols.
peeled is a Vec<Peeled<T>> which contains all new peeled symbols.
An item will never be peeled more then once.
Here a full example implementation:
use ;
;
``