diff --git a/src/algos/go_down.rs b/src/algo/go_down.rs similarity index 77% rename from src/algos/go_down.rs rename to src/algo/go_down.rs index 83619f0..20129fc 100644 --- a/src/algos/go_down.rs +++ b/src/algo/go_down.rs @@ -1,9 +1,7 @@ -use crate::BinaryTreeDirection; -use crate::context::BinaryTreeChildrenGetterContext; -use crate::directed::DirectedBinaryTreeChildrenGetterContext; -use crate::direction::DirectedBinaryTreeDirection; +use crate::base_context::{BinaryTreeChildrenGetterContext, BinaryTreeDirection}; +use crate::directed_context::{DirectedBinaryTreeChildrenGetterContext, DirectedBinaryTreeDirection}; -fn goDown( +pub fn goDown( ctx: &Ctx, root: Ctx::NodeRef, dir: BinaryTreeDirection, @@ -26,7 +24,7 @@ fn goDown( } } -fn goDownDirected( +pub fn goDownDirected( ctx: &Ctx, root: Ctx::NodeRef, dir: DirectedBinaryTreeDirection, diff --git a/src/algo/mod.rs b/src/algo/mod.rs new file mode 100644 index 0000000..e1e5ecb --- /dev/null +++ b/src/algo/mod.rs @@ -0,0 +1,7 @@ +mod go_down; +mod set_relation; +mod swap; + +pub use go_down::*; +pub use set_relation::*; +pub use swap::*; diff --git a/src/algos/set_relation.rs b/src/algo/set_relation.rs similarity index 65% rename from src/algos/set_relation.rs rename to src/algo/set_relation.rs index aad6cd6..202a549 100644 --- a/src/algos/set_relation.rs +++ b/src/algo/set_relation.rs @@ -1,7 +1,6 @@ -use crate::context::{BinaryTreeParentSetterContext, NodeRef}; -use crate::parent2node::clojure::{Parent2NodeSetterClojure, ParentProviderClojure}; +use crate::parent2node_clojure::{Parent2NodeSetterClojure, ParentProviderClojure}; -pub unsafe fn setRelation( +pub unsafe fn setRelation( parent: &mut ( impl Parent2NodeSetterClojure + ParentProviderClojure ), @@ -11,7 +10,7 @@ pub unsafe fn setRelation( parent.setAsParentOf(child); } -pub unsafe fn xSetRelation( +pub unsafe fn xSetRelation( parent: &mut ( impl Parent2NodeSetterClojure + ParentProviderClojure ), diff --git a/src/algos/swap/distant.rs b/src/algo/swap/distant.rs similarity index 86% rename from src/algos/swap/distant.rs rename to src/algo/swap/distant.rs index 9eb34fe..17a06eb 100644 --- a/src/algos/swap/distant.rs +++ b/src/algo/swap/distant.rs @@ -1,18 +1,21 @@ -use crate::algos::set_relation::{setRelation, xSetRelation}; -use crate::context::BinaryTreeParentSetterContext; -use crate::context::{ +use crate::algo::set_relation::{setRelation, xSetRelation}; +use crate::base_context::BinaryTreeParentSetterContext; +use crate::base_context::{ BinaryTreeChildrenGetterContext, BinaryTreeChildrenSetterContext, BinaryTreeParentGetterContext, }; -use crate::directed::{DirectedBinaryTreeChildrenGetterContext, DirectedBinaryTreeChildrenSetterContext}; -use crate::parent2node::clojure::{Parent2NodeSetterClojure, ParentProviderClojure}; -use crate::parent2node::fixed_wrapper::{ - FixedLeftParent2NodeGetterClojureFromContext as P2N_L, - FixedRightParent2NodeGetterClojureFromContext as P2N_R, +use crate::directed_context::{ + DirectedBinaryTreeChildrenGetterContext, DirectedBinaryTreeChildrenSetterContext, +}; +use crate::parent2node_clojure::{ FixedForwardParent2NodeGetterClojureFromDirectedContext as P2N_F, + FixedLeftParent2NodeGetterClojureFromContext as P2N_L, FixedOppositeParent2NodeGetterClojureFromDirectedContext as P2N_O, + FixedRightParent2NodeGetterClojureFromContext as P2N_R, + Parent2NodeSetterClojure, + ParentProviderClojure, }; -unsafe fn swapDistant< +pub unsafe fn swapDistant< Ctx: BinaryTreeChildrenGetterContext + BinaryTreeChildrenSetterContext + BinaryTreeParentGetterContext @@ -47,7 +50,7 @@ unsafe fn swapDistant< } } -unsafe fn swapDistantDirected< +pub unsafe fn swapDistantDirected< Ctx: DirectedBinaryTreeChildrenGetterContext + DirectedBinaryTreeChildrenSetterContext + BinaryTreeParentGetterContext diff --git a/src/algo/swap/mod.rs b/src/algo/swap/mod.rs new file mode 100644 index 0000000..f08b15e --- /dev/null +++ b/src/algo/swap/mod.rs @@ -0,0 +1,5 @@ +mod neighbors; +mod distant; + +pub use distant::*; +pub use neighbors::*; \ No newline at end of file diff --git a/src/algos/swap/neighbors.rs b/src/algo/swap/neighbors.rs similarity index 76% rename from src/algos/swap/neighbors.rs rename to src/algo/swap/neighbors.rs index cfb96a7..3fc32b9 100644 --- a/src/algos/swap/neighbors.rs +++ b/src/algo/swap/neighbors.rs @@ -1,10 +1,10 @@ -use crate::context::BinaryTreeParentGetterContext; -use crate::context::BinaryTreeParentSetterContext; -use crate::directed::DirectedBinaryTreeChildrenGetterContext; -use crate::directed::DirectedBinaryTreeChildrenSetterContext; -use crate::parent2node::clojure::{Parent2NodeSetterClojure, ParentProviderClojure}; +use crate::base_context::BinaryTreeParentGetterContext; +use crate::base_context::BinaryTreeParentSetterContext; +use crate::directed_context::DirectedBinaryTreeChildrenGetterContext; +use crate::directed_context::DirectedBinaryTreeChildrenSetterContext; +use crate::parent2node_clojure::{Parent2NodeSetterClojure, ParentProviderClojure}; -unsafe fn swapNeighbors< +pub unsafe fn swapNeighbors< Ctx: DirectedBinaryTreeChildrenGetterContext + DirectedBinaryTreeChildrenSetterContext + BinaryTreeParentGetterContext diff --git a/src/algos/mod.rs b/src/algos/mod.rs deleted file mode 100644 index 62b3b87..0000000 --- a/src/algos/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -mod go_down; -mod swap; -mod set_relation; diff --git a/src/algos/swap/mod.rs b/src/algos/swap/mod.rs deleted file mode 100644 index 3a2f2f5..0000000 --- a/src/algos/swap/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod neighbors; -mod distant; \ No newline at end of file diff --git a/src/context.rs b/src/base_context.rs similarity index 95% rename from src/context.rs rename to src/base_context.rs index 5e3e36c..5dd092f 100644 --- a/src/context.rs +++ b/src/base_context.rs @@ -1,7 +1,8 @@ -pub trait NodeRef: Sized + Clone {} +use crate::NodeRefContainer; -pub trait NodeRefContainer { - type NodeRef: NodeRef; +pub enum BinaryTreeDirection { + LEFT, + RIGHT, } pub trait BinaryTreeRootGetter: NodeRefContainer { diff --git a/src/directed/mod.rs b/src/directed/mod.rs deleted file mode 100644 index cb175cb..0000000 --- a/src/directed/mod.rs +++ /dev/null @@ -1,6 +0,0 @@ -mod context; -mod fixed_wrapper; -mod dynamic_wrapper; - -pub use context::DirectedBinaryTreeChildrenSetterContext; -pub use context::DirectedBinaryTreeChildrenGetterContext; diff --git a/src/directed/context.rs b/src/directed_context/context.rs similarity index 94% rename from src/directed/context.rs rename to src/directed_context/context.rs index b21102e..8c3b10a 100644 --- a/src/directed/context.rs +++ b/src/directed_context/context.rs @@ -1,5 +1,10 @@ use crate::NodeRefContainer; +pub enum DirectedBinaryTreeDirection { + FORWARD, + OPPOSITE, +} + pub trait DirectedBinaryTreeChildrenGetterContext: NodeRefContainer { fn getForwardChild(&self, node: Self::NodeRef) -> Option; fn getOppositeChild(&self, node: Self::NodeRef) -> Option; diff --git a/src/directed/dynamic_wrapper.rs b/src/directed_context/dynamic_wrapper.rs similarity index 90% rename from src/directed/dynamic_wrapper.rs rename to src/directed_context/dynamic_wrapper.rs index b73ff17..7e40ff9 100644 --- a/src/directed/dynamic_wrapper.rs +++ b/src/directed_context/dynamic_wrapper.rs @@ -1,9 +1,11 @@ use crate::NodeRefContainer; -use crate::context::{BinaryTreeChildrenSetterContext, BinaryTreeChildrenGetterContext, BinaryTreeParentSetterContext, BinaryTreeParentGetterContext}; -use crate::directed::context::{ - DirectedBinaryTreeChildrenSetterContext, DirectedBinaryTreeChildrenGetterContext, +use crate::base_context::{ + BinaryTreeChildrenGetterContext, BinaryTreeChildrenSetterContext, BinaryTreeDirection, + BinaryTreeParentGetterContext, BinaryTreeParentSetterContext, +}; +use crate::directed_context::context::{ + DirectedBinaryTreeChildrenGetterContext, DirectedBinaryTreeChildrenSetterContext, }; -use crate::direction::BinaryTreeDirection; pub struct DynamicDirectedBinaryTreeContextFromContext { ctx: CtxRef, @@ -38,17 +40,23 @@ impl NodeRefContainer for DynamicDirectedBinaryTreeContex type NodeRef = Ctx::NodeRef; } -impl NodeRefContainer for DynamicDirectedBinaryTreeContextFromContext<&mut Ctx> { +impl NodeRefContainer + for DynamicDirectedBinaryTreeContextFromContext<&mut Ctx> +{ type NodeRef = Ctx::NodeRef; } -impl BinaryTreeParentGetterContext for DynamicDirectedBinaryTreeContextFromContext<&Ctx> { +impl BinaryTreeParentGetterContext + for DynamicDirectedBinaryTreeContextFromContext<&Ctx> +{ fn getParent(&self, node: Self::NodeRef) -> Option { return self.ctx.getParent(node); } } -impl BinaryTreeParentGetterContext for DynamicDirectedBinaryTreeContextFromContext<&mut Ctx> { +impl BinaryTreeParentGetterContext + for DynamicDirectedBinaryTreeContextFromContext<&mut Ctx> +{ fn getParent(&self, node: Self::NodeRef) -> Option { return self.ctx.getParent(node); } diff --git a/src/directed/fixed_wrapper.rs b/src/directed_context/fixed_wrapper.rs similarity index 98% rename from src/directed/fixed_wrapper.rs rename to src/directed_context/fixed_wrapper.rs index 603b9e5..1f9b640 100644 --- a/src/directed/fixed_wrapper.rs +++ b/src/directed_context/fixed_wrapper.rs @@ -1,9 +1,9 @@ use crate::NodeRefContainer; -use crate::context::{ +use crate::base_context::{ BinaryTreeChildrenGetterContext, BinaryTreeChildrenSetterContext, BinaryTreeParentGetterContext, BinaryTreeParentSetterContext, }; -use crate::directed::context::{ +use crate::directed_context::context::{ DirectedBinaryTreeChildrenGetterContext, DirectedBinaryTreeChildrenSetterContext, }; diff --git a/src/directed_context/mod.rs b/src/directed_context/mod.rs new file mode 100644 index 0000000..7735af8 --- /dev/null +++ b/src/directed_context/mod.rs @@ -0,0 +1,7 @@ +mod context; +mod fixed_wrapper; +mod dynamic_wrapper; + +pub use context::*; +pub use fixed_wrapper::*; +pub use dynamic_wrapper::*; diff --git a/src/direction.rs b/src/direction.rs deleted file mode 100644 index 6c11ff3..0000000 --- a/src/direction.rs +++ /dev/null @@ -1,10 +0,0 @@ -#[derive(PartialEq, Eq)] -pub enum BinaryTreeDirection { - LEFT, - RIGHT, -} -#[derive(PartialEq, Eq)] -pub enum DirectedBinaryTreeDirection { - FORWARD, - OPPOSITE, -} diff --git a/src/lib.rs b/src/lib.rs index 36c1c7b..91d2809 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,8 +1,7 @@ -mod context; -mod directed; -mod direction; -mod parent2node; -mod algos; +mod misc; -pub use context::NodeRefContainer; -pub use direction::BinaryTreeDirection; \ No newline at end of file +pub use misc::*; +pub mod algo; +pub mod base_context; +pub mod directed_context; +pub mod parent2node_clojure; diff --git a/src/misc.rs b/src/misc.rs new file mode 100644 index 0000000..cd9f727 --- /dev/null +++ b/src/misc.rs @@ -0,0 +1,5 @@ +pub trait NodeRef: Sized + Clone {} + +pub trait NodeRefContainer { + type NodeRef: NodeRef; +} diff --git a/src/parent2node/mod.rs b/src/parent2node/mod.rs deleted file mode 100644 index 2ecd347..0000000 --- a/src/parent2node/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod clojure; -pub mod fixed_wrapper; -pub mod dynamic_wrappers; \ No newline at end of file diff --git a/src/parent2node/clojure.rs b/src/parent2node_clojure/clojure.rs similarity index 100% rename from src/parent2node/clojure.rs rename to src/parent2node_clojure/clojure.rs diff --git a/src/parent2node/dynamic_wrappers.rs b/src/parent2node_clojure/dynamic_wrappers.rs similarity index 68% rename from src/parent2node/dynamic_wrappers.rs rename to src/parent2node_clojure/dynamic_wrappers.rs index f9537f1..b007cc5 100644 --- a/src/parent2node/dynamic_wrappers.rs +++ b/src/parent2node_clojure/dynamic_wrappers.rs @@ -1,14 +1,14 @@ -use super::clojure::{Parent2NodeSetterClojure, ParentProviderClojure}; -use crate::BinaryTreeDirection; +use super::{Parent2NodeSetterClojure, ParentProviderClojure}; use crate::NodeRefContainer; -use crate::context::{BinaryTreeParentSetterContext, BinaryTreeRootGetter}; -use crate::context::BinaryTreeRootSetter; -use crate::context::{BinaryTreeChildrenGetterContext, BinaryTreeChildrenSetterContext}; -use crate::directed::{ - DirectedBinaryTreeChildrenGetterContext, DirectedBinaryTreeChildrenSetterContext, +use crate::base_context::{ + BinaryTreeChildrenGetterContext, BinaryTreeChildrenSetterContext, BinaryTreeDirection, + BinaryTreeParentSetterContext, BinaryTreeRootGetter, BinaryTreeRootSetter, }; -use crate::direction::DirectedBinaryTreeDirection; -use crate::parent2node::clojure::Parent2NodeGetterClojure; +use crate::directed_context::{ + DirectedBinaryTreeChildrenGetterContext, DirectedBinaryTreeChildrenSetterContext, + DirectedBinaryTreeDirection, +}; +use crate::parent2node_clojure::clojure::Parent2NodeGetterClojure; use std::mem::ManuallyDrop; use std::ops::Deref; @@ -24,13 +24,13 @@ union _NodeOrNothing { node: ManuallyDrop, } -struct DynamicParent2NodeGetterClojureFromContext { +pub struct DynamicParent2NodeGetterClojureFromContext { dir: Option, ctx: CtxRef, node: _NodeOrNothing, } -struct DynamicParent2NodeGetterClojureFromDirectedContext { +pub struct DynamicParent2NodeGetterClojureFromDirectedContext { dir: Option, ctx: CtxRef, node: _NodeOrNothing, @@ -38,47 +38,47 @@ struct DynamicParent2NodeGetterClojureFromDirectedContext { macro_rules! _constructor { ($name:ident $direction:ident) => { - impl<'ctx, Ctx: NodeRefContainer> $name <&'ctx Ctx, Ctx::NodeRef> { - pub fn wrapNode( - ctx: &'ctx Ctx, node: Ctx::NodeRef, direction: $direction - ) -> Self { + impl<'ctx, Ctx: NodeRefContainer> $name<&'ctx Ctx, Ctx::NodeRef> { + pub fn wrapNode(ctx: &'ctx Ctx, node: Ctx::NodeRef, direction: $direction) -> Self { return Self { dir: Some(direction), ctx: ctx, - node: _NodeOrNothing { node: ManuallyDrop::new(node) } + node: _NodeOrNothing { + node: ManuallyDrop::new(node), + }, }; } - - pub fn wrapRoot( - ctx: &'ctx Ctx - ) -> Self { + + pub fn wrapRoot(ctx: &'ctx Ctx) -> Self { return Self { dir: None, ctx: ctx, - node: _NodeOrNothing { nothing: () } + node: _NodeOrNothing { nothing: () }, }; } } }; ($name:ident $direction:ident mut) => { - impl<'ctx, Ctx: NodeRefContainer> $name <&'ctx mut Ctx, Ctx::NodeRef> { + impl<'ctx, Ctx: NodeRefContainer> $name<&'ctx mut Ctx, Ctx::NodeRef> { pub fn wrapNode_mut( - ctx: &'ctx mut Ctx, node: Ctx::NodeRef, direction: $direction + ctx: &'ctx mut Ctx, + node: Ctx::NodeRef, + direction: $direction, ) -> Self { return Self { dir: Some(direction), ctx: ctx, - node: _NodeOrNothing { node: ManuallyDrop::new(node) } + node: _NodeOrNothing { + node: ManuallyDrop::new(node), + }, }; } - - pub fn wrapRoot_mut( - ctx: &'ctx mut Ctx - ) -> Self { + + pub fn wrapRoot_mut(ctx: &'ctx mut Ctx) -> Self { return Self { dir: None, ctx: ctx, - node: _NodeOrNothing { nothing: () } + node: _NodeOrNothing { nothing: () }, }; } } @@ -86,7 +86,9 @@ macro_rules! _constructor { } _mut_switch!(_constructor!(DynamicParent2NodeGetterClojureFromContext BinaryTreeDirection)); -_mut_switch!(_constructor!(DynamicParent2NodeGetterClojureFromDirectedContext DirectedBinaryTreeDirection)); +_mut_switch!( + _constructor!(DynamicParent2NodeGetterClojureFromDirectedContext DirectedBinaryTreeDirection) +); macro_rules! _node_ref { ($name:ident $($mut:tt)?) => { @@ -97,7 +99,9 @@ macro_rules! _node_ref { } _mut_switch!(_node_ref!(DynamicParent2NodeGetterClojureFromContext)); -_mut_switch!(_node_ref!(DynamicParent2NodeGetterClojureFromDirectedContext)); +_mut_switch!(_node_ref!( + DynamicParent2NodeGetterClojureFromDirectedContext +)); macro_rules! _get_child { ( @@ -141,21 +145,20 @@ macro_rules! _set_child { $d1_lbl:ident $d1_xset:ident $d1_set:ident $d1_clear:ident $d2_lbl:ident $d2_xset:ident $d2_set:ident $d2_clear:ident ) => { - impl< - 'ctx, - Ctx: NodeRefContainer + BinaryTreeRootSetter + $ctx_constraint - > Parent2NodeSetterClojure - for $name <&'ctx mut Ctx, Ctx::NodeRef> + impl<'ctx, Ctx: NodeRefContainer + BinaryTreeRootSetter + $ctx_constraint> + Parent2NodeSetterClojure for $name<&'ctx mut Ctx, Ctx::NodeRef> { fn xSetChild(&mut self, newChild: Option) { - match self.dir { + match self.dir { None => self.ctx.xSetRoot(newChild), Some($dir_enum_lbl::$d1_lbl) => unsafe { - self.ctx.$d1_xset ((*self.node.node.deref()).clone(), newChild) + self.ctx + .$d1_xset((*self.node.node.deref()).clone(), newChild) }, Some($dir_enum_lbl::$d2_lbl) => unsafe { - self.ctx.$d2_xset ((*self.node.node.deref()).clone(), newChild) - } + self.ctx + .$d2_xset((*self.node.node.deref()).clone(), newChild) + }, }; } @@ -163,11 +166,13 @@ macro_rules! _set_child { match self.dir { None => self.ctx.setRoot(newChild), Some($dir_enum_lbl::$d1_lbl) => unsafe { - self.ctx.$d1_set ((*self.node.node.deref()).clone(), newChild) + self.ctx + .$d1_set((*self.node.node.deref()).clone(), newChild) }, Some($dir_enum_lbl::$d2_lbl) => unsafe { - self.ctx.$d2_set ((*self.node.node.deref()).clone(), newChild) - } + self.ctx + .$d2_set((*self.node.node.deref()).clone(), newChild) + }, }; } @@ -175,11 +180,11 @@ macro_rules! _set_child { match self.dir { None => self.ctx.clearRoot(), Some($dir_enum_lbl::$d1_lbl) => unsafe { - self.ctx.$d1_clear ((*self.node.node.deref()).clone()) + self.ctx.$d1_clear((*self.node.node.deref()).clone()) + }, + Some($dir_enum_lbl::$d2_lbl) => unsafe { + self.ctx.$d2_clear((*self.node.node.deref()).clone()) }, - Some($dir_enum_lbl::$d2_lbl) => unsafe { - self.ctx.$d2_clear ((*self.node.node.deref()).clone()) - } }; } } @@ -199,7 +204,6 @@ _set_child!( OPPOSITE xSetOppositeChild setOppositeChild clearOppositeChild ); - macro_rules! _set_as_parent_of { ($name:ident $dir_enum_lbl:ident $d1_lbl:ident $d2_lbl:ident) => { impl<'ctx, Ctx: BinaryTreeParentSetterContext> ParentProviderClojure @@ -209,11 +213,11 @@ macro_rules! _set_as_parent_of { match self.dir { None => self.ctx.clearParent(child), Some($dir_enum_lbl::$d1_lbl) => unsafe { - self.ctx.setParent(child, (*self.node.node.deref()).clone()) + self.ctx.setParent(child, (*self.node.node.deref()).clone()) }, Some($dir_enum_lbl::$d2_lbl) => unsafe { - self.ctx.setParent(child, (*self.node.node.deref()).clone()) - } + self.ctx.setParent(child, (*self.node.node.deref()).clone()) + }, }; } } @@ -243,4 +247,3 @@ macro_rules! _drop { _drop!(DynamicParent2NodeGetterClojureFromContext); _drop!(DynamicParent2NodeGetterClojureFromDirectedContext); - diff --git a/src/parent2node/fixed_wrapper.rs b/src/parent2node_clojure/fixed_wrapper.rs similarity index 97% rename from src/parent2node/fixed_wrapper.rs rename to src/parent2node_clojure/fixed_wrapper.rs index 214c7fd..6925b7b 100644 --- a/src/parent2node/fixed_wrapper.rs +++ b/src/parent2node_clojure/fixed_wrapper.rs @@ -1,12 +1,12 @@ use crate::NodeRefContainer; -use crate::context::{ +use crate::base_context::{ BinaryTreeChildrenGetterContext, BinaryTreeChildrenSetterContext, BinaryTreeParentSetterContext, BinaryTreeRootGetter, BinaryTreeRootSetter, }; -use crate::directed::{ +use crate::directed_context::{ DirectedBinaryTreeChildrenGetterContext, DirectedBinaryTreeChildrenSetterContext, }; -use crate::parent2node::clojure::{ +use crate::parent2node_clojure::clojure::{ Parent2NodeGetterClojure, Parent2NodeSetterClojure, ParentProviderClojure, }; @@ -55,13 +55,13 @@ macro_rules! _constructor { impl<'ctx, Ctx: NodeRefContainer + BinaryTreeRootGetter> FixedRootParent2NodeGetterClojureFromContext<&'ctx Ctx> { - fn wrap(ctx: &'ctx Ctx) -> Self { + pub fn wrap(ctx: &'ctx Ctx) -> Self { return Self { ctx }; } } impl<'ctx, Ctx: NodeRefContainer> FixedRootParent2NodeGetterClojureFromContext<&'ctx mut Ctx> { - fn wrap_mut(ctx: &'ctx mut Ctx) -> Self { + pub fn wrap_mut(ctx: &'ctx mut Ctx) -> Self { return Self { ctx }; } } diff --git a/src/parent2node_clojure/mod.rs b/src/parent2node_clojure/mod.rs new file mode 100644 index 0000000..3f87d5c --- /dev/null +++ b/src/parent2node_clojure/mod.rs @@ -0,0 +1,7 @@ +mod clojure; +mod dynamic_wrappers; +mod fixed_wrapper; + +pub use clojure::*; +pub use dynamic_wrappers::*; +pub use fixed_wrapper::*;