Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scoping Feature #55

Merged
merged 45 commits into from
Oct 16, 2024
Merged

Scoping Feature #55

merged 45 commits into from
Oct 16, 2024

Conversation

cyypherus
Copy link
Owner

@cyypherus cyypherus commented Oct 15, 2024

resolves #25 & #56

Copy link

github-actions bot commented Oct 15, 2024

Commit: 470ee86

Removed items from the public API
=================================
-impl<State> backer::Layout<State>
-impl<State> backer::Layout<State>
-pub fn backer::Layout<State>::draw(&self, area: backer::models::Area, state: &mut State)
-pub fn backer::Layout<State>::new(tree: fn(&mut State) -> backer::Node<State>) -> Self
-impl<State: core::clone::Clone> core::clone::Clone for backer::Layout<State>
-pub fn backer::Layout<State>::clone(&self) -> backer::Layout<State>
-impl<State: core::fmt::Debug> core::fmt::Debug for backer::Layout<State>
-pub fn backer::Layout<State>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
-impl<State> core::marker::Freeze for backer::Layout<State>
-impl<State> core::marker::Send for backer::Layout<State>
-impl<State> core::marker::Sync for backer::Layout<State>
-impl<State> core::marker::Unpin for backer::Layout<State>
-impl<State> core::panic::unwind_safe::RefUnwindSafe for backer::Layout<State>
-impl<State> core::panic::unwind_safe::UnwindSafe for backer::Layout<State>
-impl<T, U> core::convert::Into<U> for backer::Layout<State> where U: core::convert::From<T>
-pub fn backer::Layout<State>::into(self) -> U
-impl<T, U> core::convert::TryFrom<U> for backer::Layout<State> where U: core::convert::Into<T>
-pub type backer::Layout<State>::Error = core::convert::Infallible
-pub fn backer::Layout<State>::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
-impl<T, U> core::convert::TryInto<U> for backer::Layout<State> where U: core::convert::TryFrom<T>
-pub type backer::Layout<State>::Error = <U as core::convert::TryFrom<T>>::Error
-pub fn backer::Layout<State>::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
-impl<T> alloc::borrow::ToOwned for backer::Layout<State> where T: core::clone::Clone
-pub type backer::Layout<State>::Owned = T
-pub fn backer::Layout<State>::clone_into(&self, target: &mut T)
-pub fn backer::Layout<State>::to_owned(&self) -> T
-impl<T> core::any::Any for backer::Layout<State> where T: 'static + core::marker::Sized
-pub fn backer::Layout<State>::type_id(&self) -> core::any::TypeId
-impl<T> core::borrow::Borrow<T> for backer::Layout<State> where T: core::marker::Sized
-pub fn backer::Layout<State>::borrow(&self) -> &T
-impl<T> core::borrow::BorrowMut<T> for backer::Layout<State> where T: core::marker::Sized
-pub fn backer::Layout<State>::borrow_mut(&mut self) -> &mut T
-impl<T> core::clone::CloneToUninit for backer::Layout<State> where T: core::clone::Clone
-pub unsafe fn backer::Layout<State>::clone_to_uninit(&self, dst: *mut T)
-impl<T> core::convert::From<T> for backer::Layout<State>
-pub fn backer::Layout<State>::from(t: T) -> T
-pub struct backer::Node<State>
-impl<U> backer::Node<U>
-pub fn backer::Node<U>::align(self, align: backer::models::Align) -> Self
-pub fn backer::Node<U>::aspect(self, ratio: f32) -> Self
-pub fn backer::Node<U>::attach_over(self, node: Self) -> Self
-pub fn backer::Node<U>::attach_under(self, node: Self) -> Self
-pub fn backer::Node<U>::dynamic_height(self, f: impl core::ops::function::Fn(f32, &mut U) -> f32 + 'static) -> Self
-pub fn backer::Node<U>::dynamic_width(self, f: impl core::ops::function::Fn(f32, &mut U) -> f32 + 'static) -> Self
-pub fn backer::Node<U>::height(self, height: f32) -> Self
-pub fn backer::Node<U>::height_range<R>(self, range: R) -> Self where R: core::ops::range::RangeBounds<f32>
-pub fn backer::Node<U>::offset(self, offset_x: f32, offset_y: f32) -> backer::Node<U>
-pub fn backer::Node<U>::offset_x(self, amount: f32) -> backer::Node<U>
-pub fn backer::Node<U>::offset_y(self, amount: f32) -> backer::Node<U>
-pub fn backer::Node<U>::pad(self, amount: f32) -> backer::Node<U>
-pub fn backer::Node<U>::pad_bottom(self, amount: f32) -> backer::Node<U>
-pub fn backer::Node<U>::pad_leading(self, amount: f32) -> backer::Node<U>
-pub fn backer::Node<U>::pad_top(self, amount: f32) -> backer::Node<U>
-pub fn backer::Node<U>::pad_trailing(self, amount: f32) -> backer::Node<U>
-pub fn backer::Node<U>::pad_x(self, amount: f32) -> backer::Node<U>
-pub fn backer::Node<U>::pad_y(self, amount: f32) -> backer::Node<U>
-pub fn backer::Node<U>::width(self, width: f32) -> Self
-pub fn backer::Node<U>::width_range<R>(self, range: R) -> Self where R: core::ops::range::RangeBounds<f32>
-impl<State: core::fmt::Debug> core::fmt::Debug for backer::Node<State>
-pub fn backer::Node<State>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
-impl<State> core::clone::Clone for backer::Node<State>
-pub fn backer::Node<State>::clone(&self) -> Self
-impl<State> core::marker::Freeze for backer::Node<State>
-impl<State> !core::marker::Send for backer::Node<State>
-impl<State> !core::marker::Sync for backer::Node<State>
-impl<State> core::marker::Unpin for backer::Node<State>
-impl<State> !core::panic::unwind_safe::RefUnwindSafe for backer::Node<State>
-impl<State> !core::panic::unwind_safe::UnwindSafe for backer::Node<State>
-impl<T, U> core::convert::Into<U> for backer::Node<State> where U: core::convert::From<T>
-pub fn backer::Node<State>::into(self) -> U
-impl<T, U> core::convert::TryFrom<U> for backer::Node<State> where U: core::convert::Into<T>
-pub type backer::Node<State>::Error = core::convert::Infallible
-pub fn backer::Node<State>::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
-impl<T, U> core::convert::TryInto<U> for backer::Node<State> where U: core::convert::TryFrom<T>
-pub type backer::Node<State>::Error = <U as core::convert::TryFrom<T>>::Error
-pub fn backer::Node<State>::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
-impl<T> alloc::borrow::ToOwned for backer::Node<State> where T: core::clone::Clone
-pub type backer::Node<State>::Owned = T
-pub fn backer::Node<State>::clone_into(&self, target: &mut T)
-pub fn backer::Node<State>::to_owned(&self) -> T
-impl<T> core::any::Any for backer::Node<State> where T: 'static + core::marker::Sized
-pub fn backer::Node<State>::type_id(&self) -> core::any::TypeId
-impl<T> core::borrow::Borrow<T> for backer::Node<State> where T: core::marker::Sized
-pub fn backer::Node<State>::borrow(&self) -> &T
-impl<T> core::borrow::BorrowMut<T> for backer::Node<State> where T: core::marker::Sized
-pub fn backer::Node<State>::borrow_mut(&mut self) -> &mut T
-impl<T> core::clone::CloneToUninit for backer::Node<State> where T: core::clone::Clone
-pub unsafe fn backer::Node<State>::clone_to_uninit(&self, dst: *mut T)
-impl<T> core::convert::From<T> for backer::Node<State>
-pub fn backer::Node<State>::from(t: T) -> T

Changed items in the public API
===============================
-pub fn backer::nodes::area_reader<U>(func: impl core::ops::function::Fn(backer::models::Area, &mut U) -> backer::Node<U> + 'static) -> backer::Node<U>
+pub fn backer::nodes::area_reader<State>(func: impl core::ops::function::Fn(backer::models::Area, &mut State, &mut ()) -> backer::Node<State> + 'static) -> backer::Node<State>
-pub fn backer::nodes::column<U>(elements: alloc::vec::Vec<backer::Node<U>>) -> backer::Node<U>
+pub fn backer::nodes::column<State, Ctx>(elements: alloc::vec::Vec<backer::NodeWith<State, Ctx>>) -> backer::NodeWith<State, Ctx>
-pub fn backer::nodes::column_spaced<U>(spacing: f32, elements: alloc::vec::Vec<backer::Node<U>>) -> backer::Node<U>
+pub fn backer::nodes::column_spaced<State, Ctx>(spacing: f32, elements: alloc::vec::Vec<backer::NodeWith<State, Ctx>>) -> backer::NodeWith<State, Ctx>
-pub fn backer::nodes::draw<U>(drawable: impl core::ops::function::Fn(backer::models::Area, &mut U) + 'static) -> backer::Node<U>
+pub fn backer::nodes::draw<State>(drawable: impl core::ops::function::Fn(backer::models::Area, &mut State) + 'static) -> backer::Node<State>
-pub fn backer::nodes::empty<U>() -> backer::Node<U>
+pub fn backer::nodes::empty<State, Ctx>() -> backer::NodeWith<State, Ctx>
-pub fn backer::nodes::group<U>(elements: alloc::vec::Vec<backer::Node<U>>) -> backer::Node<U>
+pub fn backer::nodes::group<State, Ctx>(elements: alloc::vec::Vec<backer::NodeWith<State, Ctx>>) -> backer::NodeWith<State, Ctx>
-pub fn backer::nodes::row<U>(elements: alloc::vec::Vec<backer::Node<U>>) -> backer::Node<U>
+pub fn backer::nodes::row<State, Ctx>(elements: alloc::vec::Vec<backer::NodeWith<State, Ctx>>) -> backer::NodeWith<State, Ctx>
-pub fn backer::nodes::row_spaced<U>(spacing: f32, elements: alloc::vec::Vec<backer::Node<U>>) -> backer::Node<U>
+pub fn backer::nodes::row_spaced<State, Ctx>(spacing: f32, elements: alloc::vec::Vec<backer::NodeWith<State, Ctx>>) -> backer::NodeWith<State, Ctx>
-pub fn backer::nodes::scope<U: 'static, V: 'static>(scope: fn(&mut U) -> &mut V, node: backer::Node<V>) -> backer::Node<U>
+pub fn backer::nodes::scope<State, ScopedState, StateScoper>(node: impl core::ops::function::Fn(&mut ScopedState) -> backer::Node<ScopedState> + 'static) -> backer::Node<State> where ScopedState: 'static, State: 'static, StateScoper: backer::traits::ScopableOption<State, ScopedState> + 'static
-pub fn backer::nodes::space<U>() -> backer::Node<U>
+pub fn backer::nodes::space<State, Ctx>() -> backer::NodeWith<State, Ctx>
-pub fn backer::nodes::stack<U>(elements: alloc::vec::Vec<backer::Node<U>>) -> backer::Node<U>
+pub fn backer::nodes::stack<State, Ctx>(elements: alloc::vec::Vec<backer::NodeWith<State, Ctx>>) -> backer::NodeWith<State, Ctx>
-pub struct backer::Layout<State>
+pub struct backer::Layout<State, Ctx>

Added items to the public API
=============================
+pub fn backer::nodes::area_reader_with<State, Ctx>(func: impl core::ops::function::Fn(backer::models::Area, &mut State, &mut Ctx) -> backer::NodeWith<State, Ctx> + 'static) -> backer::NodeWith<State, Ctx>
+pub fn backer::nodes::draw_with<State, Ctx>(drawable: impl core::ops::function::Fn(backer::models::Area, &mut State, &mut Ctx) + 'static) -> backer::NodeWith<State, Ctx>
+pub fn backer::nodes::scope_with<State, ScopedState, Ctx, ScopedCtx, StateScoper, CtxScoper>(node: impl core::ops::function::Fn(&mut ScopedState, &mut ScopedCtx) -> backer::NodeWith<ScopedState, ScopedCtx> + 'static) -> backer::NodeWith<State, Ctx> where ScopedState: 'static, State: 'static, ScopedCtx: 'static, Ctx: 'static, StateScoper: backer::traits::ScopableOption<State, ScopedState> + 'static, CtxScoper: backer::traits::ScopableOption<Ctx, ScopedCtx> + 'static
+pub mod backer::traits
+pub struct backer::traits::NoOpScoper<Scoping>
+impl<Scoping> backer::traits::Scopable<Scoping, Scoping> for backer::traits::NoOpScoper<Scoping>
+impl<Scoping> backer::traits::Scopable<Scoping, Scoping> for backer::traits::NoOpScoper<Scoping>
+pub fn backer::traits::NoOpScoper<Scoping>::scope<Result>(scoping: &mut Scoping, f: impl core::ops::function::FnOnce(&mut Scoping) -> Result) -> Result
+pub fn backer::traits::NoOpScoper<Scoping>::scope<Result>(scoping: &mut Scoping, f: impl core::ops::function::FnOnce(&mut Scoping) -> Result) -> Result
+impl<Scoping> core::marker::Freeze for backer::traits::NoOpScoper<Scoping>
+impl<Scoping> core::marker::Send for backer::traits::NoOpScoper<Scoping> where Scoping: core::marker::Send
+impl<Scoping> core::marker::Sync for backer::traits::NoOpScoper<Scoping> where Scoping: core::marker::Sync
+impl<Scoping> core::marker::Unpin for backer::traits::NoOpScoper<Scoping> where Scoping: core::marker::Unpin
+impl<Scoping> core::panic::unwind_safe::RefUnwindSafe for backer::traits::NoOpScoper<Scoping> where Scoping: core::panic::unwind_safe::RefUnwindSafe
+impl<Scoping> core::panic::unwind_safe::UnwindSafe for backer::traits::NoOpScoper<Scoping> where Scoping: core::panic::unwind_safe::UnwindSafe
+impl<T, Scoping, Scoped> backer::traits::ScopableOption<Scoping, Scoped> for backer::traits::NoOpScoper<Scoping> where T: backer::traits::Scopable<Scoping, Scoped>
+pub fn backer::traits::NoOpScoper<Scoping>::scope_option<Result>(scoping: &mut Scoping, f: impl core::ops::function::FnOnce(core::option::Option<&mut Scoped>) -> Result) -> Result
+impl<T, U> core::convert::Into<U> for backer::traits::NoOpScoper<Scoping> where U: core::convert::From<T>
+pub fn backer::traits::NoOpScoper<Scoping>::into(self) -> U
+impl<T, U> core::convert::TryFrom<U> for backer::traits::NoOpScoper<Scoping> where U: core::convert::Into<T>
+pub type backer::traits::NoOpScoper<Scoping>::Error = core::convert::Infallible
+pub fn backer::traits::NoOpScoper<Scoping>::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
+impl<T, U> core::convert::TryInto<U> for backer::traits::NoOpScoper<Scoping> where U: core::convert::TryFrom<T>
+pub type backer::traits::NoOpScoper<Scoping>::Error = <U as core::convert::TryFrom<T>>::Error
+pub fn backer::traits::NoOpScoper<Scoping>::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
+impl<T> core::any::Any for backer::traits::NoOpScoper<Scoping> where T: 'static + core::marker::Sized
+pub fn backer::traits::NoOpScoper<Scoping>::type_id(&self) -> core::any::TypeId
+impl<T> core::borrow::Borrow<T> for backer::traits::NoOpScoper<Scoping> where T: core::marker::Sized
+pub fn backer::traits::NoOpScoper<Scoping>::borrow(&self) -> &T
+impl<T> core::borrow::BorrowMut<T> for backer::traits::NoOpScoper<Scoping> where T: core::marker::Sized
+pub fn backer::traits::NoOpScoper<Scoping>::borrow_mut(&mut self) -> &mut T
+impl<T> core::convert::From<T> for backer::traits::NoOpScoper<Scoping>
+pub fn backer::traits::NoOpScoper<Scoping>::from(t: T) -> T
+pub trait backer::traits::Scopable<Scoping, Scoped>
+pub fn backer::traits::Scopable::scope<Result>(scoping: &mut Scoping, f: impl core::ops::function::FnOnce(&mut Scoped) -> Result) -> Result
+pub trait backer::traits::ScopableOption<Scoping, Scoped>
+pub fn backer::traits::ScopableOption::scope_option<Result>(scoping: &mut Scoping, f: impl core::ops::function::FnOnce(core::option::Option<&mut Scoped>) -> Result) -> Result
+impl<T, Scoping, Scoped> backer::traits::ScopableOption<Scoping, Scoped> for T where T: backer::traits::Scopable<Scoping, Scoped>
+pub fn T::scope_option<Result>(scoping: &mut Scoping, f: impl core::ops::function::FnOnce(core::option::Option<&mut Scoped>) -> Result) -> Result
+impl<State, Ctx> backer::Layout<State, Ctx>
+impl<State, Ctx> backer::Layout<State, Ctx>
+pub fn backer::Layout<State, Ctx>::draw_with(&self, area: backer::models::Area, state: &mut State, ctx: &mut Ctx)
+pub fn backer::Layout<State, Ctx>::new_with(tree: impl core::ops::function::Fn(&mut State, &mut Ctx) -> backer::NodeWith<State, Ctx> + 'static) -> Self
+impl<State> backer::Layout<State, ()>
+impl<State> backer::Layout<State, ()>
+pub fn backer::Layout<State, ()>::draw(&self, area: backer::models::Area, state: &mut State)
+pub fn backer::Layout<State, ()>::new(tree: impl core::ops::function::Fn(&mut State) -> backer::Node<State> + 'static) -> Self
+impl<State, Ctx> core::marker::Freeze for backer::Layout<State, Ctx>
+impl<State, Ctx> !core::marker::Send for backer::Layout<State, Ctx>
+impl<State, Ctx> !core::marker::Sync for backer::Layout<State, Ctx>
+impl<State, Ctx> core::marker::Unpin for backer::Layout<State, Ctx>
+impl<State, Ctx> !core::panic::unwind_safe::RefUnwindSafe for backer::Layout<State, Ctx>
+impl<State, Ctx> !core::panic::unwind_safe::UnwindSafe for backer::Layout<State, Ctx>
+impl<T, U> core::convert::Into<U> for backer::Layout<State, Ctx> where U: core::convert::From<T>
+pub fn backer::Layout<State, Ctx>::into(self) -> U
+impl<T, U> core::convert::TryFrom<U> for backer::Layout<State, Ctx> where U: core::convert::Into<T>
+pub type backer::Layout<State, Ctx>::Error = core::convert::Infallible
+pub fn backer::Layout<State, Ctx>::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
+impl<T, U> core::convert::TryInto<U> for backer::Layout<State, Ctx> where U: core::convert::TryFrom<T>
+pub type backer::Layout<State, Ctx>::Error = <U as core::convert::TryFrom<T>>::Error
+pub fn backer::Layout<State, Ctx>::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
+impl<T> core::any::Any for backer::Layout<State, Ctx> where T: 'static + core::marker::Sized
+pub fn backer::Layout<State, Ctx>::type_id(&self) -> core::any::TypeId
+impl<T> core::borrow::Borrow<T> for backer::Layout<State, Ctx> where T: core::marker::Sized
+pub fn backer::Layout<State, Ctx>::borrow(&self) -> &T
+impl<T> core::borrow::BorrowMut<T> for backer::Layout<State, Ctx> where T: core::marker::Sized
+pub fn backer::Layout<State, Ctx>::borrow_mut(&mut self) -> &mut T
+impl<T> core::convert::From<T> for backer::Layout<State, Ctx>
+pub fn backer::Layout<State, Ctx>::from(t: T) -> T
+pub struct backer::NodeWith<State, Ctx>
+impl<State, Ctx> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::align(self, align: backer::models::Align) -> Self
+pub fn backer::NodeWith<State, Ctx>::aspect(self, ratio: f32) -> Self
+pub fn backer::NodeWith<State, Ctx>::attach_over(self, node: Self) -> Self
+pub fn backer::NodeWith<State, Ctx>::attach_under(self, node: Self) -> Self
+pub fn backer::NodeWith<State, Ctx>::dynamic_height_with(self, f: impl core::ops::function::Fn(f32, &mut State, &mut Ctx) -> f32 + 'static) -> Self
+pub fn backer::NodeWith<State, Ctx>::dynamic_width_with(self, f: impl core::ops::function::Fn(f32, &mut State, &mut Ctx) -> f32 + 'static) -> Self
+pub fn backer::NodeWith<State, Ctx>::height(self, height: f32) -> Self
+pub fn backer::NodeWith<State, Ctx>::height_range<R>(self, range: R) -> Self where R: core::ops::range::RangeBounds<f32>
+pub fn backer::NodeWith<State, Ctx>::offset(self, offset_x: f32, offset_y: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::offset_x(self, amount: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::offset_y(self, amount: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::pad(self, amount: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::pad_bottom(self, amount: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::pad_leading(self, amount: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::pad_top(self, amount: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::pad_trailing(self, amount: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::pad_x(self, amount: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::pad_y(self, amount: f32) -> backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::width(self, width: f32) -> Self
+pub fn backer::NodeWith<State, Ctx>::width_range<R>(self, range: R) -> Self where R: core::ops::range::RangeBounds<f32>
+impl<State> backer::NodeWith<State, ()>
+pub fn backer::NodeWith<State, ()>::dynamic_height(self, f: impl core::ops::function::Fn(f32, &mut State) -> f32 + 'static) -> Self
+pub fn backer::NodeWith<State, ()>::dynamic_width(self, f: impl core::ops::function::Fn(f32, &mut State) -> f32 + 'static) -> Self
+impl<State, Ctx> core::fmt::Debug for backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl<State, Ctx> core::marker::Freeze for backer::NodeWith<State, Ctx>
+impl<State, Ctx> !core::marker::Send for backer::NodeWith<State, Ctx>
+impl<State, Ctx> !core::marker::Sync for backer::NodeWith<State, Ctx>
+impl<State, Ctx> core::marker::Unpin for backer::NodeWith<State, Ctx>
+impl<State, Ctx> !core::panic::unwind_safe::RefUnwindSafe for backer::NodeWith<State, Ctx>
+impl<State, Ctx> !core::panic::unwind_safe::UnwindSafe for backer::NodeWith<State, Ctx>
+impl<T, U> core::convert::Into<U> for backer::NodeWith<State, Ctx> where U: core::convert::From<T>
+pub fn backer::NodeWith<State, Ctx>::into(self) -> U
+impl<T, U> core::convert::TryFrom<U> for backer::NodeWith<State, Ctx> where U: core::convert::Into<T>
+pub type backer::NodeWith<State, Ctx>::Error = core::convert::Infallible
+pub fn backer::NodeWith<State, Ctx>::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
+impl<T, U> core::convert::TryInto<U> for backer::NodeWith<State, Ctx> where U: core::convert::TryFrom<T>
+pub type backer::NodeWith<State, Ctx>::Error = <U as core::convert::TryFrom<T>>::Error
+pub fn backer::NodeWith<State, Ctx>::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
+impl<T> core::any::Any for backer::NodeWith<State, Ctx> where T: 'static + core::marker::Sized
+pub fn backer::NodeWith<State, Ctx>::type_id(&self) -> core::any::TypeId
+impl<T> core::borrow::Borrow<T> for backer::NodeWith<State, Ctx> where T: core::marker::Sized
+pub fn backer::NodeWith<State, Ctx>::borrow(&self) -> &T
+impl<T> core::borrow::BorrowMut<T> for backer::NodeWith<State, Ctx> where T: core::marker::Sized
+pub fn backer::NodeWith<State, Ctx>::borrow_mut(&mut self) -> &mut T
+impl<T> core::convert::From<T> for backer::NodeWith<State, Ctx>
+pub fn backer::NodeWith<State, Ctx>::from(t: T) -> T
+pub type backer::Node<State> = backer::NodeWith<State, ()>

@cyypherus cyypherus changed the title Dyn trait scoping mut multi Scoping Feature Oct 16, 2024
@cyypherus cyypherus merged commit af25dad into main Oct 16, 2024
5 checks passed
@cyypherus cyypherus deleted the dyn-trait-scoping-mut-multi branch October 16, 2024 05:13
@cyypherus cyypherus mentioned this pull request Oct 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

test scope
1 participant