Iron Rose: (Invertable Bloom Filter for Rust)
What is it?
Iron Rose is a rust implementation of Invertable Bloom Filters as found in What's the Difference? Efficient Set Reconciliation without Prior Context
Expected use
use ;
use Uuid;
let mut estimator = default;
let mut remote_estimator = default;
let core =
.map
.;
let local_ids =
.map
.;
let remote_ids =
.map
.;
let ids_from_database = core.iter.chain.;
for x in ids_from_database.iter
for x in core.iter.chain
// Retreive Remote Estimator in some way
let ibf_size = estimator
.estimate_differences
.expect;
let mut local = IBFnew;
let mut remote = IBFnew;
for x in ids_from_database.iter
for x in core.iter.chain
// Retreive remote IBF
let diff = .expect;
let differences = diff
.decode
.expect;
Worthwhile Notes
Using Rust's trait system, we are actually able to say that anything that implements BitXOR and Serializable/Deserializable can be sent via an IBF, this means that we get the benifits of the IBF basic idea, but can encode larger and more complex things than just IDs.
Future enhancements "I plan to add"™ are wrappers around various basic types that allow us to send slices back and forth relativly easily.