From b59b0f03ddda86619769722f37398b5c7325cc88 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Wed, 14 Jan 2026 04:30:22 +0300 Subject: [PATCH] Redesigned 'links types provider' to 'struct metadata' --- src/lib.rs | 2 ++ src/links.rs | 8 ++------ src/metadata.rs | 7 +++++++ 3 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 src/metadata.rs 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; +}