//! Implementations of Uniplate and Biplate for common types.
//!
//! This includes stdlib types as well as common collections
//!
//! Box types are excluded, and are inlined by the macro.
// NOTE (niklasdewally): my assumption is that we can do all this here, and that llvm will inline
// this and/or devirtualise the Box<dyn Fn()> when necessary to make this fast.
// https://users.rust-lang.org/t/why-box-dyn-fn-is-the-same-fast-as-normal-fn/96392
use VecDeque;
use cratederive_iter;
use cratederive_unplateable;
// `std` base types {{{
derive_unplateable!;
derive_unplateable!;
derive_unplateable!;
derive_unplateable!;
derive_unplateable!;
derive_unplateable!;
derive_unplateable!;
derive_unplateable!;
derive_unplateable!;
derive_unplateable!;
derive_unplateable!;
// Implement Biplate for collections by converting them to iterators.
derive_iter!;
derive_iter!;