Diffstat (limited to 'src/build/builders/core/struct.rs')
| -rw-r--r-- | src/build/builders/core/struct.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/build/builders/core/struct.rs b/src/build/builders/core/struct.rs index e9abc9c..555314d 100644 --- a/src/build/builders/core/struct.rs +++ b/src/build/builders/core/struct.rs @@ -211,6 +211,7 @@ where Dynamic<Info::T>: DynBind<E>, Info: StructTypeInfo<'ctx, Mode, E>, Dynamic<OwnedStatic<usize>>: DynBind<E>, + Dynamic<OwnedStatic<String>>: DynBind<E>, for<'a> Dynamic<&'a Info::T>: DynBind<E>, for<'b, 'c> Dynamic<TypeName::T<'b, 'c, Info::ValueT, E>>: DynBind<E>, Dynamic<OwnedStatic<&'static str>>: DynBind<E>, @@ -262,6 +263,7 @@ where Dynamic<OwnedStatic<&'static str>>: DynBind<E>, for<'a> Dynamic<&'a Info::T>: DynBind<E>, Dynamic<OwnedStatic<usize>>: DynBind<E>, + Dynamic<OwnedStatic<String>>: DynBind<E>, for<'b, 'c> Dynamic<TypeName::T<'b, 'c, Info::ValueT, E>>: DynBind<E>, for<'b> Dynamic<TempBorrowedStatic<'b, str>>: DynBind<E>, for<'b, 'c> Dynamic<&'b TypeName::T<'b, 'c, Info::ValueT, E>>: DynBind<E>, @@ -288,6 +290,7 @@ any_trait! { Info: StructTypeInfo<'ctx, Mode, E>, Dynamic<Info::T>: DynBind<E>, Dynamic<OwnedStatic<&'static str>>: DynBind<E>, + Dynamic<OwnedStatic<String>>: DynBind<E>, for<'b, 'c> Dynamic<TypeName::T<'b, 'c, Info::ValueT, E>>: DynBind<E>, for<'b, 'c> Dynamic<&'b TypeName::T<'b, 'c, Info::ValueT, E>>: DynBind<E>, for<'b> Dynamic<TempBorrowedStatic<'b, str>>: DynBind<E>, @@ -307,6 +310,7 @@ where Dynamic<OwnedStatic<usize>>: DynBind<E>, for<'b> Dynamic<TempBorrowedStatic<'b, str>>: DynBind<E>, Dynamic<OwnedStatic<&'static str>>: DynBind<E>, + Dynamic<OwnedStatic<String>>: DynBind<E>, E: Environment, { #[inline(always)] @@ -463,6 +467,7 @@ where Info: StructTypeInfo<'ctx, Mode, E>, for<'b> Dynamic<TempBorrowedStatic<'b, str>>: DynBind<E>, Dynamic<OwnedStatic<&'static str>>: DynBind<E>, + Dynamic<OwnedStatic<String>>: DynBind<E>, Dynamic<OwnedStatic<usize>>: DynBind<E>, E: Environment, { @@ -571,6 +576,7 @@ any_trait! { I: StructTypeInfo<'ctx, M, E>, Dynamic<OwnedStatic<usize>>: DynBind<E>, Dynamic<OwnedStatic<&'static str>>: DynBind<E>, + Dynamic<OwnedStatic<String>>: DynBind<E>, for<'b> Dynamic<TempBorrowedStatic<'b, str>>: DynBind<E>, } @@ -580,6 +586,7 @@ where I: StructTypeInfo<'ctx, M, E>, Dynamic<OwnedStatic<usize>>: DynBind<E>, Dynamic<OwnedStatic<&'static str>>: DynBind<E>, + Dynamic<OwnedStatic<String>>: DynBind<E>, for<'a> Dynamic<TempBorrowedStatic<'a, str>>: DynBind<E>, { fn visit<'a: 'c, 'b: 'c, 'c>( @@ -615,11 +622,13 @@ any_trait! { ValueProto<OwnedStatic<usize>, E>, ValueProto<TempBorrowedStaticHrt<str>, E>, ValueProto<OwnedStatic<&'static str>, E>, + ValueProto<OwnedStatic<String>, E>, ] where E: Environment, I: StructTypeInfo<'ctx, M, E>, Dynamic<OwnedStatic<usize>>: DynBind<E>, Dynamic<OwnedStatic<&'static str>>: DynBind<E>, + Dynamic<OwnedStatic<String>>: DynBind<E>, for<'a> Dynamic<TempBorrowedStatic<'a, str>>: DynBind<E>, } @@ -682,3 +691,23 @@ where E::value(VisitResult::Control(Flow::Done)).cast() } } + +impl<'ctx, I, M, E> Value<'ctx, OwnedStatic<String>, E> for NameVisitor<'ctx, I, M, E> +where + E: Environment, + I: StructTypeInfo<'ctx, M, E>, + Dynamic<OwnedStatic<String>>: DynBind<E>, +{ + fn visit<'a>( + &'a mut self, + OwnedStatic(name): TypeName::T<'a, 'ctx, OwnedStatic<String>, E>, + ) -> NativeForm<'a, VisitResult<Dynamic<TypeName::T<'a, 'ctx, OwnedStatic<String>, E>>>, E> + where + TypeName::T<'a, 'ctx, TempBorrowedStaticHrt<str>, E>: Sized, + 'ctx: 'a, + { + self.field_marker = I::marker_from_name(&name); + + E::value(VisitResult::Control(Flow::Done)).cast() + } +} |