diff --git a/src/lib.rs b/src/lib.rs index d9ea91d..f74f579 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,7 @@ mod node_ref; mod links; +mod metadata; pub use node_ref::*; pub use links::*; +pub use metadata::*; diff --git a/src/links.rs b/src/links.rs index 12bfea1..14ef1ef 100644 --- a/src/links.rs +++ b/src/links.rs @@ -1,11 +1,7 @@ -pub trait LinkedStructLinksTypeProvider { - type Links: Sized; -} - -pub trait LinkedStructLinksOffset: LinkedStructLinksTypeProvider { +pub trait LinkedStructLinksOffset { type Node; + type Links; fn getLinks(nodeRef: &Self::Node, consumer: impl FnOnce(&Self::Links) -> R) -> R; - fn getLinksMut(nodeRef: &mut Self::Node, consumer: impl FnOnce(&mut Self::Links) -> R) -> R; } diff --git a/src/metadata.rs b/src/metadata.rs new file mode 100644 index 0000000..1176710 --- /dev/null +++ b/src/metadata.rs @@ -0,0 +1,7 @@ +use crate::LinkedStructNodeRef; + +pub trait LinkedStructMetadata { + type Links: Sized; + + type NodeRef: LinkedStructNodeRef; +}