Diffstat (limited to 'src/protocol/visitor/sequence.rs')
| -rw-r--r-- | src/protocol/visitor/sequence.rs | 51 |
1 files changed, 23 insertions, 28 deletions
diff --git a/src/protocol/visitor/sequence.rs b/src/protocol/visitor/sequence.rs index e748eef..c79f985 100644 --- a/src/protocol/visitor/sequence.rs +++ b/src/protocol/visitor/sequence.rs @@ -27,20 +27,19 @@ pub trait Sequence<'ctx, E: Effect> { pub struct SequenceProto<E: Effect>(Marker<E>); -higher_ranked_type! { - impl TypeName { - impl['a, 'ctx, E] type T['a, 'ctx] for SequenceProto<E> = - dyn Sequence<'ctx, E> + Send + Sync + 'a - where { - E: Effect - }; - - impl['a, 'ctx, E] type HigherRanked['a, 'ctx] for dyn Sequence<'ctx, E> + Send + Sync + 'a = - SequenceProto<E> - where { - E: Effect - }; - } +impl<'a, 'ctx, E> TypeName::MemberTypeForLt<'a, 'ctx, &'a &'ctx ()> for SequenceProto<E> +where + E: Effect, +{ + type T = dyn Sequence<'ctx, E> + Send + Sync + 'a; +} + +impl<'a, 'ctx, E> TypeName::LowerTypeWithBound<'a, 'ctx, &'a &'ctx ()> + for dyn Sequence<'ctx, E> + Send + Sync + 'a +where + E: Effect, +{ + type Higher = SequenceProto<E>; } pub trait SequenceScope<'ctx, E: Effect> { @@ -61,28 +60,24 @@ pub struct SequenceKnown { pub len: (usize, Option<usize>), } -higher_ranked_type! { - impl Meta { - impl['a, 'ctx] type T['a, 'ctx] for SequenceKnown = - SequenceKnown; +impl<'a, 'ctx> Meta::MemberTypeForLt<'a, 'ctx, &'a &'ctx ()> for SequenceKnown { + type T = SequenceKnown; +} - impl['a, 'ctx] type HigherRanked['a, 'ctx] for SequenceKnown = - SequenceKnown; - } +impl<'a, 'ctx> Meta::LowerTypeWithBound<'a, 'ctx, &'a &'ctx ()> for SequenceKnown { + type Higher = SequenceKnown; } pub struct SequenceHint { pub len: (usize, Option<usize>), } -higher_ranked_type! { - impl Meta { - impl['a, 'ctx] type T['a, 'ctx] for SequenceHint = - SequenceHint; +impl<'a, 'ctx> Meta::MemberTypeForLt<'a, 'ctx, &'a &'ctx ()> for SequenceHint { + type T = SequenceHint; +} - impl['a, 'ctx] type HigherRanked['a, 'ctx] for SequenceHint = - SequenceHint; - } +impl<'a, 'ctx> Meta::LowerTypeWithBound<'a, 'ctx, &'a &'ctx ()> for SequenceHint { + type Higher = SequenceHint; } impl<E: Effect> HintMeta for SequenceProto<E> { |