an experiment in Rust type providers