Diffstat (limited to 'src/macros/build.rs')
-rw-r--r--src/macros/build.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/macros/build.rs b/src/macros/build.rs
index a0ad6ab..e655aae 100644
--- a/src/macros/build.rs
+++ b/src/macros/build.rs
@@ -13,6 +13,7 @@ macro_rules! Build {
where
effectful::bound::Dynamic<$name>: effectful::environment::DynBind<E>,
$($type: $crate::Build<'ctx, M, E>,)*
+ $(effectful::bound::Dynamic<$type>: effectful::environment::DynBind<E>,)*
$crate::builders::core::r#struct::StructBuilder<'ctx, __Info, M, E>: $crate::Builder<'ctx, E, Value = Self>
{
type Builder = $crate::builders::core::r#struct::StructBuilder<'ctx, __Info, M, E>;
@@ -83,7 +84,8 @@ macro_rules! Build {
impl<'ctx, M: 'ctx, E: effectful::environment::Environment> $crate::builders::core::r#struct::StructTypeInfo<'ctx, M, E> for __Info
where
effectful::bound::Dynamic<$name>: effectful::environment::DynBind<E>,
- $($type: $crate::Build<'ctx, M, E>),*
+ $($type: $crate::Build<'ctx, M, E>,)*
+ $(effectful::bound::Dynamic<$type>: effectful::environment::DynBind<E>),*
{
type Builders = Builders<'ctx, M, E>;
type FieldMarker = Field;
@@ -120,10 +122,10 @@ macro_rules! Build {
effectful::effective::try_join(
(
- $(builders.$field.build().map((), |_, x| x.map(|x| <<$type as Build<'ctx, M, E>>::Builder as BuilderTypes<E>>::unwrap_output(x)).map_err(Error::$field)),)*
+ $(builders.$field.build().map((), |_, x| x.map(|x| effectful::bound::Dynamic(<<$type as Build<'ctx, M, E>>::Builder as BuilderTypes<E>>::unwrap_output(x))).map_err(Error::$field)),)*
)
).map((), |_, result| match result {
- Ok(($($field,)*)) => Ok(effectful::bound::Dynamic($name {
+ Ok(($(effectful::bound::Dynamic($field),)*)) => Ok(effectful::bound::Dynamic($name {
$($field),*
})),
Err(err) => Err(err)