diff --git a/charon/src/ast/types_utils.rs b/charon/src/ast/types_utils.rs index e6e16bee..fe85bfe7 100644 --- a/charon/src/ast/types_utils.rs +++ b/charon/src/ast/types_utils.rs @@ -118,6 +118,19 @@ impl Binder { } } +impl RegionBinder { + /// Wrap the value in an empty region binder, shifting variables appropriately. + pub fn empty(x: T) -> Self + where + T: TyVisitable, + { + RegionBinder { + regions: Default::default(), + skip_binder: x.move_under_binder(), + } + } +} + impl GenericArgs { pub fn len(&self) -> usize { let GenericArgs { @@ -557,6 +570,11 @@ pub trait TyVisitable: Sized + AstVisitable { self.drive_mut(&mut SubstVisitor::new(generics)); } + /// Move under one binder. + fn move_under_binder(self) -> Self { + self.move_under_binders(DeBruijnId::one()) + } + /// Move under `depth` binders. fn move_under_binders(mut self, depth: DeBruijnId) -> Self { let Continue(()) = self.visit_db_id::(|id| { diff --git a/charon/src/bin/charon-driver/translate/translate_ctx.rs b/charon/src/bin/charon-driver/translate/translate_ctx.rs index 22cdbd43..85c50231 100644 --- a/charon/src/bin/charon-driver/translate/translate_ctx.rs +++ b/charon/src/bin/charon-driver/translate/translate_ctx.rs @@ -333,6 +333,9 @@ pub(crate) struct BodyTransCtx<'tcx, 'ctx> { pub parent_trait_clauses: Vector, /// (For traits only) accumulated trait clauses on associated types. pub item_trait_clauses: HashMap>, + /// (For method declarations only) the clause id corresponding to the explicit `Self` clause. + /// If `None`, use `TraitRefKind::Self` instead. + pub self_clause_id: Option, /// The (regular) variables in the current function body. pub locals: Locals, @@ -985,6 +988,7 @@ impl<'tcx, 'ctx> BodyTransCtx<'tcx, 'ctx> { binding_levels: Default::default(), parent_trait_clauses: Default::default(), item_trait_clauses: Default::default(), + self_clause_id: Default::default(), locals: Default::default(), vars_map: Default::default(), blocks: Default::default(), @@ -1169,6 +1173,12 @@ impl<'tcx, 'ctx> BodyTransCtx<'tcx, 'ctx> { span: Span, mut id: usize, ) -> Result { + if self.self_clause_id.is_some() { + // We added an extra first clause which hax doesn't know about, so we adapt the index + // accordingly. + // TODO: more robust tracking of clause ids between hax and charon. + id += 1; + } // The clause indices returned by hax count clauses in order, starting from the parentmost. // While adding clauses to a binding level we already need to translate types and clauses, // so the innermost item binder may not have all the clauses yet. Hence for that binder we diff --git a/charon/src/bin/charon-driver/translate/translate_predicates.rs b/charon/src/bin/charon-driver/translate/translate_predicates.rs index 874e7168..98251362 100644 --- a/charon/src/bin/charon-driver/translate/translate_predicates.rs +++ b/charon/src/bin/charon-driver/translate/translate_predicates.rs @@ -255,10 +255,17 @@ impl<'tcx, 'ctx> BodyTransCtx<'tcx, 'ctx> { trait_ref, path, ); - // If we are refering to a trait clause, we need to find the - // relevant one. + // If we are refering to a trait clause, we need to find the relevant one. let mut trait_id = match &impl_source.r#impl { - ImplExprAtom::SelfImpl { .. } => TraitRefKind::SelfId, + ImplExprAtom::SelfImpl { .. } => match self.self_clause_id { + None => TraitRefKind::SelfId, + // An explicit `Self` clause is bound at the top-level; we use it instead + // of the implicit `TraitRefKind::SelfId` one. + Some(id) => TraitRefKind::Clause(DeBruijnVar::bound( + DeBruijnId::new(self.binding_levels.len() - 1), + id, + )), + }, ImplExprAtom::LocalBound { index, .. } => { let var = self.lookup_clause_var(span, *index)?; TraitRefKind::Clause(var) diff --git a/charon/src/bin/charon-driver/translate/translate_traits.rs b/charon/src/bin/charon-driver/translate/translate_traits.rs index e919ff32..a169d78a 100644 --- a/charon/src/bin/charon-driver/translate/translate_traits.rs +++ b/charon/src/bin/charon-driver/translate/translate_traits.rs @@ -55,7 +55,12 @@ impl BodyTransCtx<'_, '_> { error_or_panic!(self, span, &format!("Trait aliases are not supported")); } - let hax::FullDefKind::Trait { items, .. } = &def.kind else { + let hax::FullDefKind::Trait { + items, + self_predicate, + .. + } = &def.kind + else { error_or_panic!(self, span, &format!("Unexpected definition: {def:?}")); }; let items: Vec<(TraitItemName, &hax::AssocItem, Arc)> = items @@ -72,6 +77,12 @@ impl BodyTransCtx<'_, '_> { // `self.parent_trait_clauses`. // TODO: Distinguish between required and implied trait clauses? self.translate_def_generics(span, def)?; + let self_trait_ref = TraitRef { + kind: TraitRefKind::SelfId, + trait_decl_ref: RegionBinder::empty( + self.translate_trait_predicate(span, self_predicate)?, + ), + }; // Translate the associated items // We do something subtle here: TODO: explain @@ -90,19 +101,23 @@ impl BodyTransCtx<'_, '_> { let fun_def = self.t_ctx.hax_def(item_def_id)?; let fn_ref = self.translate_binder_for_def(item_span, &fun_def, |bt_ctx| { let fun_id = bt_ctx.register_fun_decl_id(item_span, item_def_id); - // TODO: there's probably a cleaner way to write this assert_eq!(bt_ctx.binding_levels.len(), 2); - let fun_generics = bt_ctx - .outermost_binder() - .params - .identity_args_at_depth(GenericsSource::item(def_id), DeBruijnId::one()) - .concat( - GenericsSource::item(fun_id), - &bt_ctx.innermost_binder().params.identity_args_at_depth( - GenericsSource::Method(def_id.into(), item_name.clone()), - DeBruijnId::zero(), - ), + let mut fun_generics = + bt_ctx.outermost_binder().params.identity_args_at_depth( + GenericsSource::item(def_id), + DeBruijnId::one(), ); + // Add the necessary explicit `Self` clause at the start. + fun_generics + .trait_refs + .insert(0.into(), self_trait_ref.clone().move_under_binder()); + fun_generics = fun_generics.concat( + GenericsSource::item(fun_id), + &bt_ctx.innermost_binder().params.identity_args_at_depth( + GenericsSource::Method(def_id.into(), item_name.clone()), + DeBruijnId::zero(), + ), + ); Ok(FunDeclRef { id: fun_id, generics: fun_generics, diff --git a/charon/src/bin/charon-driver/translate/translate_types.rs b/charon/src/bin/charon-driver/translate/translate_types.rs index 34541ebb..57e2d0ca 100644 --- a/charon/src/bin/charon-driver/translate/translate_types.rs +++ b/charon/src/bin/charon-driver/translate/translate_types.rs @@ -551,7 +551,7 @@ impl<'tcx, 'ctx> BodyTransCtx<'tcx, 'ctx> { ) -> Result<(), Error> { assert!(self.binding_levels.len() == 0); self.binding_levels.push_front(BindingLevel::new(true)); - self.push_generics_for_def(span, def, false)?; + self.push_generics_for_def(span, def, false, false)?; self.innermost_binder_mut().params.check_consistency(); Ok(()) } @@ -563,7 +563,7 @@ impl<'tcx, 'ctx> BodyTransCtx<'tcx, 'ctx> { def: &hax::FullDef, ) -> Result<(), Error> { self.binding_levels.push_front(BindingLevel::new(true)); - self.push_generics_for_def_without_parents(span, def, true, true)?; + self.push_generics_for_def_without_parents(span, def, true, true, false)?; self.innermost_binder().params.check_consistency(); Ok(()) } @@ -579,24 +579,34 @@ impl<'tcx, 'ctx> BodyTransCtx<'tcx, 'ctx> { span: Span, def: &hax::FullDef, is_parent: bool, + explicit_self_clause: bool, ) -> Result<(), Error> { - use hax::FullDefKind; + use hax::FullDefKind::*; // Add generics from the parent item, recursively (recursivity is important for closures, - // as they could be nested). - match &def.kind { - FullDefKind::AssocTy { .. } - | FullDefKind::AssocFn { .. } - | FullDefKind::AssocConst { .. } - | FullDefKind::Closure { .. } - | FullDefKind::Ctor { .. } - | FullDefKind::Variant { .. } => { + // as they can be nested). + match def.kind() { + AssocTy { .. } + | AssocFn { .. } + | AssocConst { .. } + | Closure { .. } + | Ctor { .. } + | Variant { .. } => { let parent_def_id = def.parent.as_ref().unwrap(); let parent_def = self.t_ctx.hax_def(parent_def_id)?; - self.push_generics_for_def(span, &parent_def, true)?; + let explicit_self_clause = matches!(def.kind(), AssocFn { .. }) + && matches!(parent_def.kind(), Trait { .. }); + // Add an explicit `Self` clause to trait method declarations. + self.push_generics_for_def(span, &parent_def, true, explicit_self_clause)?; } _ => {} } - self.push_generics_for_def_without_parents(span, def, !is_parent, !is_parent)?; + self.push_generics_for_def_without_parents( + span, + def, + !is_parent, + !is_parent, + explicit_self_clause, + )?; Ok(()) } @@ -608,22 +618,33 @@ impl<'tcx, 'ctx> BodyTransCtx<'tcx, 'ctx> { def: &hax::FullDef, include_late_bound: bool, include_assoc_ty_clauses: bool, + explicit_self_clause: bool, ) -> Result<(), Error> { use hax::FullDefKind; if let Some((generics, predicates)) = def.generics() { // Add the generic params. self.push_generic_params(generics)?; - // Add the self trait clause. - match &def.kind { - FullDefKind::TraitImpl { - trait_pred: self_predicate, - .. - } - | FullDefKind::Trait { self_predicate, .. } => { - self.register_trait_decl_id(span, &self_predicate.trait_ref.def_id); - let _ = self.translate_trait_predicate(span, self_predicate)?; - } - _ => {} + // Add the explicit self trait clause if required. + if let FullDefKind::Trait { self_predicate, .. } = &def.kind + && explicit_self_clause + { + // We add an explicit `Self` clause to trait method declarations. Trait method + // implementations already don't use the implicit `Self` clause. This way, methods + // don't need an implicit `Self` clause: they're normal functions, and the trait + // decl/impl takes care to pass the right arguments. + let self_predicate = + RegionBinder::empty(self.translate_trait_predicate(span, self_predicate)?); + let clause_id = + self.innermost_generics_mut() + .trait_clauses + .push_with(|clause_id| TraitClause { + clause_id, + origin: PredicateOrigin::TraitSelf, + span: Some(span), + trait_: self_predicate, + }); + // Record the id so we can resolve `ImplExpr::Self`s to it. + self.self_clause_id = Some(clause_id); } // Add the predicates. let (origin, location) = match &def.kind { diff --git a/charon/src/ids/vector.rs b/charon/src/ids/vector.rs index 59f7eaab..24ec8a05 100644 --- a/charon/src/ids/vector.rs +++ b/charon/src/ids/vector.rs @@ -126,6 +126,12 @@ where self.real_len += other.real_len; } + /// Insert a value at that index, shifting all the values with equal or larger indices. + pub fn insert(&mut self, id: I, x: T) { + self.real_len += 1; + self.vector.insert(id, Some(x)) + } + /// Map each entry to a new one, keeping the same ids. pub fn map(self, mut f: impl FnMut(T) -> U) -> Vector { Vector { diff --git a/charon/tests/cargo/dependencies.out b/charon/tests/cargo/dependencies.out index 8ee44738..d4ea383f 100644 --- a/charon/tests/cargo/dependencies.out +++ b/charon/tests/cargo/dependencies.out @@ -23,7 +23,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } fn take_mut::take<'_0, T, F>(@1: &'_0 mut (T), @2: F) @@ -151,7 +151,9 @@ fn test_cargo_dependencies::main() return } -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, diff --git a/charon/tests/crate_data.rs b/charon/tests/crate_data.rs index 89eda1af..cbc7f706 100644 --- a/charon/tests/crate_data.rs +++ b/charon/tests/crate_data.rs @@ -222,6 +222,7 @@ fn predicate_origins() -> anyhow::Result<()> { ( "test_crate::Trait::trait_method", vec![ + (TraitSelf, "Trait"), (WhereClauseOnFn, "Sized"), (WhereClauseOnFn, "From"), (WhereClauseOnFn, "From"), diff --git a/charon/tests/ui/arrays.out b/charon/tests/ui/arrays.out index 8fc2d33c..a0931529 100644 --- a/charon/tests/ui/arrays.out +++ b/charon/tests/ui/arrays.out @@ -254,12 +254,12 @@ trait core::slice::index::SliceIndex { parent_clause0 : [@TraitClause0]: core::slice::index::private_slice_index::Sealed type Output - fn get<'_0> = core::slice::index::SliceIndex::get<'_0_0, Self, T> - fn get_mut<'_0> = core::slice::index::SliceIndex::get_mut<'_0_0, Self, T> - fn get_unchecked = core::slice::index::SliceIndex::get_unchecked - fn get_unchecked_mut = core::slice::index::SliceIndex::get_unchecked_mut - fn index<'_0> = core::slice::index::SliceIndex::index<'_0_0, Self, T> - fn index_mut<'_0> = core::slice::index::SliceIndex::index_mut<'_0_0, Self, T> + fn get<'_0> = core::slice::index::SliceIndex::get<'_0_0, Self, T>[Self] + fn get_mut<'_0> = core::slice::index::SliceIndex::get_mut<'_0_0, Self, T>[Self] + fn get_unchecked = core::slice::index::SliceIndex::get_unchecked[Self] + fn get_unchecked_mut = core::slice::index::SliceIndex::get_unchecked_mut[Self] + fn index<'_0> = core::slice::index::SliceIndex::index<'_0_0, Self, T>[Self] + fn index_mut<'_0> = core::slice::index::SliceIndex::index_mut<'_0_0, Self, T>[Self] } fn core::slice::index::{impl core::ops::index::Index for Slice}::index<'_0, T, I>(@1: &'_0 (Slice), @2: I) -> &'_0 (@TraitClause2::Output) @@ -405,7 +405,7 @@ fn test_crate::array_to_slice_mut_<'_0>(@1: &'_0 mut (Array)) - trait core::ops::index::Index { type Output - fn index<'_0> = core::ops::index::Index::index<'_0_0, Self, Idx> + fn index<'_0> = core::ops::index::Index::index<'_0_0, Self, Idx>[Self] } fn core::array::{impl core::ops::index::Index for Array}#15::index<'_0, T, I, const N : usize>(@1: &'_0 (Array), @2: I) -> &'_0 (core::array::{impl core::ops::index::Index for Array}#15[@TraitClause0, @TraitClause1, @TraitClause2]::Output) @@ -456,7 +456,7 @@ fn test_crate::array_subslice_shared_<'_0>(@1: &'_0 (Array), @2 trait core::ops::index::IndexMut { parent_clause0 : [@TraitClause0]: core::ops::index::Index - fn index_mut<'_0> = core::ops::index::IndexMut::index_mut<'_0_0, Self, Idx> + fn index_mut<'_0> = core::ops::index::IndexMut::index_mut<'_0_0, Self, Idx>[Self] } impl core::array::{impl core::ops::index::Index for Array}#15 : core::ops::index::Index, I> @@ -1874,9 +1874,13 @@ fn test_crate::slice_pattern_4<'_0>(@1: &'_0 (Slice<()>)) return } -fn core::ops::index::Index::index<'_0, Self, Idx>(@1: &'_0 (Self), @2: Idx) -> &'_0 (Self::Output) +fn core::ops::index::Index::index<'_0, Self, Idx>(@1: &'_0 (Self), @2: Idx) -> &'_0 (@TraitClause0::Output) +where + [@TraitClause0]: core::ops::index::Index, -fn core::ops::index::IndexMut::index_mut<'_0, Self, Idx>(@1: &'_0 mut (Self), @2: Idx) -> &'_0 mut (Self::parent_clause0::Output) +fn core::ops::index::IndexMut::index_mut<'_0, Self, Idx>(@1: &'_0 mut (Self), @2: Idx) -> &'_0 mut (@TraitClause0::parent_clause0::Output) +where + [@TraitClause0]: core::ops::index::IndexMut, impl core::array::{impl core::ops::index::IndexMut for Array}#16 : core::ops::index::IndexMut, I> where @@ -1888,17 +1892,29 @@ where fn index_mut<'_0> = core::array::{impl core::ops::index::IndexMut for Array}#16::index_mut<'_0_0, T, I, const N : usize>[@TraitClause0, @TraitClause1, @TraitClause2] } -fn core::slice::index::SliceIndex::get<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> core::option::Option<&'_0 (Self::Output)>[core::marker::Sized<&'_0 (Self::Output)>] +fn core::slice::index::SliceIndex::get<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> core::option::Option<&'_0 (@TraitClause0::Output)>[core::marker::Sized<&'_0 (@TraitClause0::Output)>] +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::slice::index::SliceIndex::get_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> core::option::Option<&'_0 mut (Self::Output)>[core::marker::Sized<&'_0 mut (Self::Output)>] +fn core::slice::index::SliceIndex::get_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> core::option::Option<&'_0 mut (@TraitClause0::Output)>[core::marker::Sized<&'_0 mut (@TraitClause0::Output)>] +where + [@TraitClause0]: core::slice::index::SliceIndex, -unsafe fn core::slice::index::SliceIndex::get_unchecked(@1: Self, @2: *const T) -> *const Self::Output +unsafe fn core::slice::index::SliceIndex::get_unchecked(@1: Self, @2: *const T) -> *const @TraitClause0::Output +where + [@TraitClause0]: core::slice::index::SliceIndex, -unsafe fn core::slice::index::SliceIndex::get_unchecked_mut(@1: Self, @2: *mut T) -> *mut Self::Output +unsafe fn core::slice::index::SliceIndex::get_unchecked_mut(@1: Self, @2: *mut T) -> *mut @TraitClause0::Output +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::slice::index::SliceIndex::index<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> &'_0 (Self::Output) +fn core::slice::index::SliceIndex::index<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> &'_0 (@TraitClause0::Output) +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::slice::index::SliceIndex::index_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> &'_0 mut (Self::Output) +fn core::slice::index::SliceIndex::index_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> &'_0 mut (@TraitClause0::Output) +where + [@TraitClause0]: core::slice::index::SliceIndex, diff --git a/charon/tests/ui/associated-types.out b/charon/tests/ui/associated-types.out index 63faecf2..e6fe7ec7 100644 --- a/charon/tests/ui/associated-types.out +++ b/charon/tests/ui/associated-types.out @@ -5,8 +5,8 @@ trait core::marker::Sized trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -22,7 +22,7 @@ where parent_clause1 : [@TraitClause1]: core::clone::Clone parent_clause2 : [@TraitClause2]: core::marker::Sized type Item - fn use_item<'_0> = test_crate::Foo::use_item<'a, '_0_0, Self> + fn use_item<'_0> = test_crate::Foo::use_item<'a, '_0_0, Self>[Self] } fn core::clone::impls::{impl core::clone::Clone for &'_0 (T)}#3::clone<'_0, '_1, T>(@1: &'_1 (&'_0 (T))) -> &'_0 (T) @@ -77,6 +77,8 @@ where } fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn test_crate::external_use_item<'a, T>(@1: @TraitClause1::Item) -> @TraitClause1::Item where @@ -212,7 +214,7 @@ impl test_crate::loopy_with_generics::{impl test_crate::loopy_with_generics::Foo trait core::borrow::Borrow { - fn borrow<'_0> = core::borrow::Borrow::borrow<'_0_0, Self, Borrowed> + fn borrow<'_0> = core::borrow::Borrow::borrow<'_0_0, Self, Borrowed>[Self] } trait alloc::borrow::ToOwned @@ -220,8 +222,8 @@ trait alloc::borrow::ToOwned parent_clause0 : [@TraitClause0]: core::borrow::Borrow parent_clause1 : [@TraitClause1]: core::marker::Sized type Owned - fn to_owned<'_0> = alloc::borrow::ToOwned::to_owned<'_0_0, Self> - fn clone_into<'_0, '_1> = alloc::borrow::ToOwned::clone_into<'_0_0, '_0_1, Self> + fn to_owned<'_0> = alloc::borrow::ToOwned::to_owned<'_0_0, Self>[Self] + fn clone_into<'_0, '_1> = alloc::borrow::ToOwned::clone_into<'_0_0, '_0_1, Self>[Self] } enum test_crate::cow::Cow<'a, B> @@ -254,22 +256,32 @@ where type Item = &'a ((core::option::Option[@TraitClause0], test_crate::params::{impl test_crate::params::Foo<'a, core::option::Option[@TraitClause0]> for ()}<'_, T>[@TraitClause0]::X)) } -fn test_crate::Foo::use_item<'a, '_1, Self>(@1: &'_1 (Self::Item)) -> &'_1 (Self::Item) +fn test_crate::Foo::use_item<'a, '_1, Self>(@1: &'_1 (@TraitClause0::Item)) -> &'_1 (@TraitClause0::Item) +where + [@TraitClause0]: test_crate::Foo<'a, Self>, { - let @0: &'_ (Self::Item); // return - let x@1: &'_ (Self::Item); // arg #1 + let @0: &'_ (@TraitClause0::Item); // return + let x@1: &'_ (@TraitClause0::Item); // arg #1 @0 := copy (x@1) return } fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, -fn alloc::borrow::ToOwned::to_owned<'_0, Self>(@1: &'_0 (Self)) -> Self::Owned +fn alloc::borrow::ToOwned::to_owned<'_0, Self>(@1: &'_0 (Self)) -> @TraitClause0::Owned +where + [@TraitClause0]: alloc::borrow::ToOwned, -fn alloc::borrow::ToOwned::clone_into<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 mut (Self::Owned)) +fn alloc::borrow::ToOwned::clone_into<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 mut (@TraitClause0::Owned)) +where + [@TraitClause0]: alloc::borrow::ToOwned, fn core::borrow::Borrow::borrow<'_0, Self, Borrowed>(@1: &'_0 (Self)) -> &'_0 (Borrowed) +where + [@TraitClause0]: core::borrow::Borrow, diff --git a/charon/tests/ui/call-to-known-trait-method.out b/charon/tests/ui/call-to-known-trait-method.out index b7d25321..fb4d4835 100644 --- a/charon/tests/ui/call-to-known-trait-method.out +++ b/charon/tests/ui/call-to-known-trait-method.out @@ -13,10 +13,12 @@ struct test_crate::Struct trait core::default::Default { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn default = core::default::Default::default + fn default = core::default::Default::default[Self] } fn core::default::Default::default() -> Self +where + [@TraitClause0]: core::default::Default, fn test_crate::{impl core::default::Default for test_crate::Struct[@TraitClause0]}#1::default() -> test_crate::Struct[@TraitClause0] where @@ -47,20 +49,20 @@ trait test_crate::Trait parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized type Item - fn method> = test_crate::Trait::method[@TraitClause0_0] + fn method> = test_crate::Trait::method[Self, @TraitClause0_0] } trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } fn test_crate::{impl test_crate::Trait for test_crate::Struct[@TraitClause0]}::method() @@ -145,15 +147,24 @@ fn test_crate::main() fn test_crate::Trait::method() where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: test_crate::Trait, + [@TraitClause1]: core::marker::Sized, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, diff --git a/charon/tests/ui/closures.out b/charon/tests/ui/closures.out index ccd5b1d7..7f06cc0b 100644 --- a/charon/tests/ui/closures.out +++ b/charon/tests/ui/closures.out @@ -22,7 +22,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -30,7 +30,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } trait core::ops::function::Fn @@ -38,7 +38,7 @@ trait core::ops::function::Fn parent_clause0 : [@TraitClause0]: core::ops::function::FnMut parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call<'_0> = core::ops::function::Fn::call<'_0_0, Self, Args> + fn call<'_0> = core::ops::function::Fn::call<'_0_0, Self, Args>[Self] } enum core::option::Option @@ -49,7 +49,9 @@ enum core::option::Option | Some(T) -fn core::ops::function::Fn::call<'_0, Self, Args>(@1: &'_0 (Self), @2: Args) -> Self::parent_clause0::parent_clause0::Output +fn core::ops::function::Fn::call<'_0, Self, Args>(@1: &'_0 (Self), @2: Args) -> @TraitClause0::parent_clause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::Fn, fn test_crate::map_option(@1: core::option::Option[@TraitClause0], @2: F) -> core::option::Option[@TraitClause0] where @@ -413,11 +415,13 @@ fn test_crate::test_map_option_id2(@1: core::option::Option[core::marker::S trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn test_crate::id_clone(@1: T) -> T where @@ -818,10 +822,16 @@ fn test_crate::BLAH() -> u32 global test_crate::BLAH: u32 = test_crate::BLAH() fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, diff --git a/charon/tests/ui/comments.out b/charon/tests/ui/comments.out index 3800e05d..14c0e7f7 100644 --- a/charon/tests/ui/comments.out +++ b/charon/tests/ui/comments.out @@ -141,7 +141,7 @@ struct test_crate::Foo = trait core::default::Default { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn default = core::default::Default::default + fn default = core::default::Default::default[Self] } fn core::default::{impl core::default::Default for u32}#7::default() -> u32 @@ -421,6 +421,8 @@ fn test_crate::fool() } fn core::default::Default::default() -> Self +where + [@TraitClause0]: core::default::Default, impl core::default::{impl core::default::Default for u32}#7 : core::default::Default { diff --git a/charon/tests/ui/demo.out b/charon/tests/ui/demo.out index 009d5694..4d001d49 100644 --- a/charon/tests/ui/demo.out +++ b/charon/tests/ui/demo.out @@ -381,7 +381,7 @@ where trait test_crate::Counter { - fn incr<'_0> = test_crate::Counter::incr<'_0_0, Self> + fn incr<'_0> = test_crate::Counter::incr<'_0_0, Self>[Self] } fn test_crate::{impl test_crate::Counter for usize}::incr<'_0>(@1: &'_0 mut (usize)) -> usize @@ -404,6 +404,8 @@ impl test_crate::{impl test_crate::Counter for usize} : test_crate::Counter(@1: &'_0 mut (Self)) -> usize +where + [@TraitClause0]: test_crate::Counter, fn test_crate::use_counter<'a, T>(@1: &'a mut (T)) -> usize where diff --git a/charon/tests/ui/dictionary_passing_style_woes.out b/charon/tests/ui/dictionary_passing_style_woes.out index 5306e203..fba6c221 100644 --- a/charon/tests/ui/dictionary_passing_style_woes.out +++ b/charon/tests/ui/dictionary_passing_style_woes.out @@ -65,7 +65,7 @@ trait test_crate::X { parent_clause0 : [@TraitClause0]: core::marker::Sized type Assoc - fn method<'_0> = test_crate::X::method<'_0_0, Self> + fn method<'_0> = test_crate::X::method<'_0_0, Self>[Self] } trait test_crate::A @@ -78,7 +78,9 @@ trait test_crate::B parent_clause0 : [@TraitClause0]: test_crate::X } -fn test_crate::X::method<'_0, Self>(@1: &'_0 (Self)) -> Self::Assoc +fn test_crate::X::method<'_0, Self>(@1: &'_0 (Self)) -> @TraitClause0::Assoc +where + [@TraitClause0]: test_crate::X, fn test_crate::a(@1: T) -> @TraitClause1::parent_clause0::Assoc where diff --git a/charon/tests/ui/dyn-trait.out b/charon/tests/ui/dyn-trait.out index 45dde09f..d5a232e4 100644 --- a/charon/tests/ui/dyn-trait.out +++ b/charon/tests/ui/dyn-trait.out @@ -19,7 +19,7 @@ struct core::fmt::Error = {} trait core::fmt::Display { - fn fmt<'_0, '_1, '_2> = core::fmt::Display::fmt<'_0_0, '_0_1, '_0_2, Self> + fn fmt<'_0, '_1, '_2> = core::fmt::Display::fmt<'_0_0, '_0_1, '_0_2, Self>[Self] } struct alloc::alloc::Global = {} @@ -77,10 +77,12 @@ fn test_crate::bar<'_0>(@1: &'_0 (dyn (exists(TODO)))) } fn alloc::string::ToString::to_string<'_0, Self>(@1: &'_0 (Self)) -> alloc::string::String +where + [@TraitClause0]: alloc::string::ToString, trait alloc::string::ToString { - fn to_string<'_0> = alloc::string::ToString::to_string<'_0_0, Self> + fn to_string<'_0> = alloc::string::ToString::to_string<'_0_0, Self>[Self] } impl alloc::string::{impl alloc::string::ToString for T}#32 : alloc::string::ToString @@ -91,6 +93,8 @@ where } fn core::fmt::Display::fmt<'_0, '_1, '_2, Self>(@1: &'_0 (Self), @2: &'_1 mut (core::fmt::Formatter<'_2>)) -> core::result::Result<(), core::fmt::Error>[core::marker::Sized<()>, core::marker::Sized] +where + [@TraitClause0]: core::fmt::Display, diff --git a/charon/tests/ui/external.out b/charon/tests/ui/external.out index b3dda386..3145cbe3 100644 --- a/charon/tests/ui/external.out +++ b/charon/tests/ui/external.out @@ -28,8 +28,8 @@ where trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -207,8 +207,12 @@ fn test_crate::incr<'_0>(@1: &'_0 mut (core::cell::Cell)) } fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, diff --git a/charon/tests/ui/generic-associated-types.out b/charon/tests/ui/generic-associated-types.out index 42215d5e..2bb08884 100644 --- a/charon/tests/ui/generic-associated-types.out +++ b/charon/tests/ui/generic-associated-types.out @@ -26,14 +26,14 @@ error: Error during trait resolution: Found unsupported GAT `Item` when resolvin | ^^^^^^^^^^^ | -error: Found unsupported GAT `Item` when resolving trait `core::marker::Sized` +error: Found unsupported GAT `Item` when resolving trait `core::marker::Sized<@TraitClause0::Item>` --> tests/ui/generic-associated-types.rs:9:5 | 9 | fn next<'a>(&'a mut self) -> Option>; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | -error: Error during trait resolution: Found unsupported GAT `Item` when resolving trait `core::marker::Sized` +error: Error during trait resolution: Found unsupported GAT `Item` when resolving trait `core::marker::Sized<@TraitClause0::Item>` --> tests/ui/generic-associated-types.rs:9:5 | 9 | fn next<'a>(&'a mut self) -> Option>; diff --git a/charon/tests/ui/impl-trait.out b/charon/tests/ui/impl-trait.out index 5222d9b7..999c5621 100644 --- a/charon/tests/ui/impl-trait.out +++ b/charon/tests/ui/impl-trait.out @@ -5,8 +5,8 @@ trait core::marker::Sized trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait test_crate::Foo @@ -14,7 +14,7 @@ trait test_crate::Foo parent_clause0 : [@TraitClause0]: core::clone::Clone parent_clause1 : [@TraitClause1]: core::marker::Sized type Type - fn get_ty<'_0> = test_crate::Foo::get_ty<'_0_0, Self> + fn get_ty<'_0> = test_crate::Foo::get_ty<'_0_0, Self>[Self] } fn core::clone::impls::{impl core::clone::Clone for u32}#8::clone<'_0>(@1: &'_0 (u32)) -> u32 @@ -92,7 +92,7 @@ trait test_crate::RPITIT parent_clause0 : [@TraitClause0]: test_crate::Foo parent_clause1 : [@TraitClause1]: core::marker::Sized type - fn make_foo = test_crate::RPITIT::make_foo + fn make_foo = test_crate::RPITIT::make_foo[Self] } fn test_crate::{impl test_crate::RPITIT for ()}#1::make_foo() @@ -112,7 +112,9 @@ impl test_crate::{impl test_crate::RPITIT for ()}#1 : test_crate::RPITIT<()> fn make_foo = test_crate::{impl test_crate::RPITIT for ()}#1::make_foo } -fn test_crate::RPITIT::make_foo() -> Self:: +fn test_crate::RPITIT::make_foo() -> @TraitClause0:: +where + [@TraitClause0]: test_crate::RPITIT, { let @0: (); // return let @1: (); // anonymous local @@ -122,9 +124,13 @@ fn test_crate::RPITIT::make_foo() -> Self:: return } -fn test_crate::Foo::get_ty<'_0, Self>(@1: &'_0 (Self)) -> &'_0 (Self::Type) +fn test_crate::Foo::get_ty<'_0, Self>(@1: &'_0 (Self)) -> &'_0 (@TraitClause0::Type) +where + [@TraitClause0]: test_crate::Foo, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn test_crate::use_tait() where @@ -209,10 +215,12 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, fn test_crate::use_wrap() { @@ -250,6 +258,8 @@ fn test_crate::use_wrap() } fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, diff --git a/charon/tests/ui/issue-114-opaque-bodies.out b/charon/tests/ui/issue-114-opaque-bodies.out index 1b29c913..d7296be5 100644 --- a/charon/tests/ui/issue-114-opaque-bodies.out +++ b/charon/tests/ui/issue-114-opaque-bodies.out @@ -207,8 +207,8 @@ fn test_crate::max() -> usize trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } fn test_crate::partial_eq(@1: T) @@ -228,12 +228,14 @@ where } fn core::convert::From::from(@1: T) -> Self +where + [@TraitClause0]: core::convert::From, trait core::convert::From { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn from = core::convert::From::from + fn from = core::convert::From::from[Self] } impl core::convert::num::{impl core::convert::From for i64}#83 : core::convert::From @@ -244,15 +246,19 @@ impl core::convert::num::{impl core::convert::From for i64}#83 : core::conv } fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, { let @0: bool; // return let self@1: &'_ (Self); // arg #1 let other@2: &'_ (Rhs); // arg #2 let @3: bool; // anonymous local - @3 := Self::eq<'_, '_>(move (self@1), move (other@2)) + @3 := @TraitClause0::eq<'_, '_>(move (self@1), move (other@2)) @0 := ~(move (@3)) drop @3 return diff --git a/charon/tests/ui/issue-118-generic-copy.out b/charon/tests/ui/issue-118-generic-copy.out index f73124d2..69183658 100644 --- a/charon/tests/ui/issue-118-generic-copy.out +++ b/charon/tests/ui/issue-118-generic-copy.out @@ -7,8 +7,8 @@ trait core::marker::Sized trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } fn test_crate::{impl core::clone::Clone for test_crate::Foo}::clone<'_0>(@1: &'_0 (test_crate::Foo)) -> test_crate::Foo @@ -111,8 +111,12 @@ where } fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, diff --git a/charon/tests/ui/issue-159-heterogeneous-recursive-definitions.out b/charon/tests/ui/issue-159-heterogeneous-recursive-definitions.out index b1ff4d7b..26261b71 100644 --- a/charon/tests/ui/issue-159-heterogeneous-recursive-definitions.out +++ b/charon/tests/ui/issue-159-heterogeneous-recursive-definitions.out @@ -2,8 +2,8 @@ trait test_crate::Ops { - fn ZERO = test_crate::Ops::ZERO - fn ntt_multiply = test_crate::Ops::ntt_multiply + fn ZERO = test_crate::Ops::ZERO[Self] + fn ntt_multiply = test_crate::Ops::ntt_multiply[Self] } struct test_crate::Portable = {} @@ -39,8 +39,12 @@ impl test_crate::{impl test_crate::Ops for test_crate::Portable} : test_crate::O } fn test_crate::Ops::ZERO() -> Self +where + [@TraitClause0]: test_crate::Ops, fn test_crate::Ops::ntt_multiply() -> Self +where + [@TraitClause0]: test_crate::Ops, diff --git a/charon/tests/ui/issue-165-vec-macro.out b/charon/tests/ui/issue-165-vec-macro.out index fef93285..773cadc5 100644 --- a/charon/tests/ui/issue-165-vec-macro.out +++ b/charon/tests/ui/issue-165-vec-macro.out @@ -17,8 +17,8 @@ where trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } fn alloc::vec::from_elem(@1: T, @2: usize) -> alloc::vec::Vec[@TraitClause0, core::marker::Sized] @@ -105,8 +105,12 @@ fn test_crate::bar() unsafe fn alloc::alloc::exchange_malloc(@1: usize, @2: usize) -> *mut u8 fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, diff --git a/charon/tests/ui/issue-372-type-param-out-of-range.out b/charon/tests/ui/issue-372-type-param-out-of-range.out index f846387f..a4c06531 100644 --- a/charon/tests/ui/issue-372-type-param-out-of-range.out +++ b/charon/tests/ui/issue-372-type-param-out-of-range.out @@ -19,7 +19,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -27,7 +27,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } fn test_crate::{test_crate::S<'a, K>[@TraitClause0]}::f<'a, K, F>() @@ -79,9 +79,13 @@ where return } -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, diff --git a/charon/tests/ui/issue-394-rpit-with-lifetime.out b/charon/tests/ui/issue-394-rpit-with-lifetime.out index faacf2df..eef1b2d4 100644 --- a/charon/tests/ui/issue-394-rpit-with-lifetime.out +++ b/charon/tests/ui/issue-394-rpit-with-lifetime.out @@ -31,7 +31,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -39,7 +39,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } fn core::iter::sources::from_fn::from_fn(@1: F) -> core::iter::sources::from_fn::FromFn[@TraitClause1] @@ -60,9 +60,13 @@ fn test_crate::sparse_transitions<'a>() -> core::iter::sources::from_fn::FromFn< return } -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, diff --git a/charon/tests/ui/issue-395-failed-to-normalize.out b/charon/tests/ui/issue-395-failed-to-normalize.out index d280950e..9471e6ab 100644 --- a/charon/tests/ui/issue-395-failed-to-normalize.out +++ b/charon/tests/ui/issue-395-failed-to-normalize.out @@ -41,8 +41,8 @@ opaque type core::array::iter::IntoIter trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -131,7 +131,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -139,7 +139,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } opaque type core::iter::adapters::map::Map @@ -202,7 +202,7 @@ opaque type core::iter::adapters::inspect::Inspect trait core::ops::try_trait::FromResidual { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn from_residual = core::ops::try_trait::FromResidual::from_residual + fn from_residual = core::ops::try_trait::FromResidual::from_residual[Self] } enum core::ops::control_flow::ControlFlow @@ -221,8 +221,8 @@ trait core::ops::try_trait::Try parent_clause2 : [@TraitClause2]: core::marker::Sized type Output type Residual - fn from_output = core::ops::try_trait::Try::from_output - fn branch = core::ops::try_trait::Try::branch + fn from_output = core::ops::try_trait::Try::from_output[Self] + fn branch = core::ops::try_trait::Try::branch[Self] } trait core::ops::try_trait::Residual @@ -240,19 +240,19 @@ where trait core::default::Default { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn default = core::default::Default::default + fn default = core::default::Default::default[Self] } trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Eq { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self> + fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self>[Self] } enum core::cmp::Ordering = @@ -264,21 +264,21 @@ enum core::cmp::Ordering = trait core::cmp::PartialOrd { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs> - fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs> - fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs> - fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs> - fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs> + fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs>[Self] + fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs>[Self] + fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs>[Self] + fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs>[Self] + fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Ord { parent_clause0 : [@TraitClause0]: core::cmp::Eq parent_clause1 : [@TraitClause1]: core::cmp::PartialOrd - fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self> - fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[@TraitClause0_0] - fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[@TraitClause0_0] - fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[@TraitClause0_0] + fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self>[Self] + fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[Self, @TraitClause0_0] + fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[Self, @TraitClause0_0] + fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[Self, @TraitClause0_0] } opaque type core::iter::adapters::rev::Rev @@ -301,83 +301,83 @@ trait core::iter::traits::iterator::Iterator { parent_clause0 : [@TraitClause0]: core::marker::Sized type Item - fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self> - fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[@TraitClause0_0] - fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self> - fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[@TraitClause0_0] - fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[@TraitClause0_0] - fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self> - fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self> - fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[@TraitClause0_0] - fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[@TraitClause0_0, @TraitClause0_1] - fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[@TraitClause0_0] - fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[@TraitClause0_0] - fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[@TraitClause0_0] - fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[@TraitClause0_0] - fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[@TraitClause0_0, @TraitClause0_1] - fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[@TraitClause0_0] - fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[@TraitClause0_0] - fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[@TraitClause0_0, @TraitClause0_1] - fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[@TraitClause0_0, @TraitClause0_1] - fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[@TraitClause0_0, @TraitClause0_1] - fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] - fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[@TraitClause0_0, @TraitClause0_1] - fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[@TraitClause0_0] - fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[@TraitClause0_0, @TraitClause0_1] - fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[@TraitClause0_0] + fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self>[Self] + fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[Self, @TraitClause0_0] + fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self>[Self] + fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[Self, @TraitClause0_0] + fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[Self, @TraitClause0_0] + fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self>[Self] + fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self>[Self] + fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[Self, @TraitClause0_0] + fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[Self, @TraitClause0_0, @TraitClause0_1] + fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[Self, @TraitClause0_0] + fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[Self, @TraitClause0_0] + fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[Self, @TraitClause0_0] + fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[Self, @TraitClause0_0] + fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[Self, @TraitClause0_0, @TraitClause0_1] + fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[Self, @TraitClause0_0] + fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[Self, @TraitClause0_0] + fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[Self, @TraitClause0_0, @TraitClause0_1] + fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[Self, @TraitClause0_0, @TraitClause0_1] + fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[Self, @TraitClause0_0, @TraitClause0_1] + fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] + fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[Self, @TraitClause0_0, @TraitClause0_1] + fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[Self, @TraitClause0_0] + fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[Self, @TraitClause0_0, @TraitClause0_1] + fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[Self, @TraitClause0_0] } trait core::iter::traits::collect::IntoIterator @@ -389,7 +389,7 @@ where parent_clause2 : [@TraitClause2]: core::marker::Sized type Item type IntoIter - fn into_iter = core::iter::traits::collect::IntoIterator::into_iter + fn into_iter = core::iter::traits::collect::IntoIterator::into_iter[Self] } opaque type core::iter::adapters::intersperse::Intersperse @@ -432,34 +432,34 @@ trait core::iter::traits::collect::FromIterator { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[@TraitClause0_0, @TraitClause0_1] + fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::collect::Extend { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[@TraitClause0_0, @TraitClause0_1] - fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A> - fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A> - fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[@TraitClause0_0] + fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[Self, @TraitClause0_0, @TraitClause0_1] + fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A>[Self] + fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A>[Self] + fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[Self, @TraitClause0_0] } trait core::iter::traits::double_ended::DoubleEndedIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self> - fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self> - fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self> - fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self>[Self] + fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self>[Self] + fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self>[Self] + fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] } trait core::iter::traits::exact_size::ExactSizeIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self> - fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self> + fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self>[Self] + fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self>[Self] } opaque type core::iter::adapters::array_chunks::ArrayChunks @@ -471,21 +471,21 @@ trait core::iter::traits::accum::Sum { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[@TraitClause0_0, @TraitClause0_1] + fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::accum::Product { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[@TraitClause0_0, @TraitClause0_1] + fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::adapters::zip::TrustedRandomAccessNoCoerce { parent_clause0 : [@TraitClause0]: core::marker::Sized const MAY_HAVE_SIDE_EFFECT : bool - fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[@TraitClause0_0] + fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[Self, @TraitClause0_0] } struct test_crate::S @@ -501,648 +501,791 @@ type test_crate::S2 [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, = test_crate::S[@TraitClause0, @TraitClause1, UNKNOWN(Could not find a clause for `Binder { value: , bound_vars: [] }` in the current context: `Unimplemented`), UNKNOWN(Could not find a clause for `Binder { value: ::Item>>, bound_vars: [] }` in the current context: `Unimplemented`)] -fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter[Self::parent_clause0]>[core::marker::Sized>, core::marker::Sized[Self::parent_clause0]>] +fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter<@TraitClause0::Item, const N : usize>[@TraitClause0::parent_clause0]>[core::marker::Sized>, core::marker::Sized[@TraitClause0::parent_clause0]>] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::size_hint<'_0, Self>(@1: &'_0 (Self)) -> (usize, core::option::Option[core::marker::Sized]) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, fn core::iter::traits::iterator::Iterator::count(@1: Self) -> usize where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::advance_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0] - -fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause0] +fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, - @TraitClause2::Item = Self::Item, -fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, + @TraitClause3::Item = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: Self::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, -fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause1, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: @TraitClause0::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause2]: core::clone::Clone<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause2, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) +fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = (), - -fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause1, @TraitClause0] -where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause0] +fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause0] +fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, - -fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause3, @TraitClause0, @TraitClause2] +fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause2, @TraitClause0, @TraitClause1, @TraitClause3] +fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = U, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause2, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause4, @TraitClause1, @TraitClause3] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, - for<'_0> @TraitClause3::parent_clause0::Output = R, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = core::option::Option[@TraitClause2], -fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause0] +fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause3, @TraitClause1, @TraitClause2, @TraitClause4] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = U, -fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = (), + [@TraitClause2]: core::iter::traits::collect::IntoIterator<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) +fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause3, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: for<'_0> core::ops::function::FnMut))>, + for<'_0> @TraitClause4::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause1] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::FromIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause3::TryType +fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::try_trait::Try, - [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause2::Residual, B>, - [@TraitClause4]: core::iter::traits::collect::FromIterator, -fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::FromIterator, + [@TraitClause3]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause4::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::Extend, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::try_trait::Try<@TraitClause0::Item>, + [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, B>, + [@TraitClause5]: core::iter::traits::collect::FromIterator, + +fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::Extend, + [@TraitClause3]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partition(@1: Self, @2: F) -> (B, B) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::default::Default, - [@TraitClause4]: core::iter::traits::collect::Extend, - [@TraitClause5]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause5::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::default::Default, + [@TraitClause5]: core::iter::traits::collect::Extend, + [@TraitClause6]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause6::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>(@1: Self, @2: P) -> usize where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized

, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, T : 'a, - Self::Item = &'a mut (T), - for<'_0> @TraitClause4::parent_clause0::Output = bool, + @TraitClause0::Item = &'a mut (T), + for<'_0> @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_partitioned(@1: Self, @2: P) -> bool where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::try_fold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, + +fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + @TraitClause5::Output = (), -fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::ops::try_trait::Try, - @TraitClause3::parent_clause0::Output = R, - @TraitClause4::Output = (), + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B +fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: core::ops::function::FnMut R, (@TraitClause0::Item, @TraitClause0::Item)>, + @TraitClause4::Output = @TraitClause0::Item, + @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, - @TraitClause3::Output = Self::Item, - @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause0] +fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (@TraitClause0::Item))>, + @TraitClause4::Output = bool, + for<'_0> @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, - @TraitClause3::Output = bool, - for<'_0> @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::exact_size::ExactSizeIterator, + [@TraitClause5]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::ops::function::FnMut, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, - [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, - @TraitClause1::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, - -fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause2]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::iterator::Iterator::unzip(@1: Self) -> (FromA, FromB) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::default::Default, - [@TraitClause5]: core::iter::traits::collect::Extend, - [@TraitClause6]: core::default::Default, - [@TraitClause7]: core::iter::traits::collect::Extend, - [@TraitClause8]: core::marker::Sized, - [@TraitClause9]: core::iter::traits::iterator::Iterator, - Self::Item = (A, B), - -fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause1] -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::marker::Copy, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::default::Default, + [@TraitClause6]: core::iter::traits::collect::Extend, + [@TraitClause7]: core::default::Default, + [@TraitClause8]: core::iter::traits::collect::Extend, + [@TraitClause9]: core::marker::Sized, + [@TraitClause10]: core::iter::traits::iterator::Iterator, + @TraitClause0::Item = (A, B), + +fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause2] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::marker::Copy, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause1] +fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::clone::Clone, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause0] +fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::clone::Clone, -fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::sum(@1: Self) -> S where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Sum, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Sum, fn core::iter::traits::iterator::Iterator::product(@1: Self) -> P where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Product, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Product, fn core::iter::traits::iterator::Iterator::cmp(@1: Self, @2: I) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - @TraitClause1::Item = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::Ord<@TraitClause0::Item>, + [@TraitClause4]: core::marker::Sized, + @TraitClause2::Item = @TraitClause0::Item, fn core::iter::traits::iterator::Iterator::cmp_by(@1: Self, @2: I, @3: F) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::cmp::Ordering, fn core::iter::traits::iterator::Iterator::partial_cmp(@1: Self, @2: I) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partial_cmp_by(@1: Self, @2: I, @3: F) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::option::Option[core::marker::Sized], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::option::Option[core::marker::Sized], fn core::iter::traits::iterator::Iterator::eq(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::eq_by(@1: Self, @2: I, @3: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::ne(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::lt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::le(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::gt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::ge(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::is_sorted(@1: Self) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::PartialOrd, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause0::Item>, fn core::iter::traits::iterator::Iterator::is_sorted_by(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_sorted_by_key(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::cmp::PartialOrd, - @TraitClause3::parent_clause0::Output = K, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause5]: core::cmp::PartialOrd, + @TraitClause4::parent_clause0::Output = K, -unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> Self::Item +unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> @TraitClause0::Item where - [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::Ord::cmp<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 (Self)) -> core::cmp::Ordering +where + [@TraitClause0]: core::cmp::Ord, fn core::cmp::Ord::max(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::min(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::clamp(@1: Self, @2: Self, @3: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Eq::assert_receiver_is_total_eq<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: core::cmp::Eq, fn core::cmp::PartialOrd::partial_cmp<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> core::option::Option[core::marker::Sized] +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::lt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::le<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::gt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::ge<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::default::Default::default() -> Self +where + [@TraitClause0]: core::default::Default, -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, -fn core::ops::try_trait::Try::from_output(@1: Self::Output) -> Self +fn core::ops::try_trait::Try::from_output(@1: @TraitClause0::Output) -> Self +where + [@TraitClause0]: core::ops::try_trait::Try, -fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow[Self::parent_clause0::parent_clause0, Self::parent_clause1] +fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow<@TraitClause0::Residual, @TraitClause0::Output>[@TraitClause0::parent_clause0::parent_clause0, @TraitClause0::parent_clause1] +where + [@TraitClause0]: core::ops::try_trait::Try, fn core::ops::try_trait::FromResidual::from_residual(@1: R) -> Self +where + [@TraitClause0]: core::ops::try_trait::FromResidual, fn core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0, Self>(@1: &'_0 (Self)) -> usize where - [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause1]: core::iter::traits::iterator::Iterator, fn core::iter::traits::accum::Sum::sum(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Sum, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::accum::Product::product(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Product, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::FromIterator::from_iter(@1: T) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::FromIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, -fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> Self::IntoIter +fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> @TraitClause0::IntoIter +where + [@TraitClause0]: core::iter::traits::collect::IntoIterator, fn core::iter::traits::collect::Extend::extend<'_0, Self, A, T>(@1: &'_0 mut (Self), @2: T) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend_one<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) +where + [@TraitClause0]: core::iter::traits::collect::Extend, fn core::iter::traits::collect::Extend::extend_reserve<'_0, Self, A>(@1: &'_0 mut (Self), @2: usize) +where + [@TraitClause0]: core::iter::traits::collect::Extend, unsafe fn core::iter::traits::collect::Extend::extend_one_unchecked<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, -fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, - [@TraitClause5]: core::ops::try_trait::Try, - @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, fn core::iter::traits::double_ended::DoubleEndedIterator::rfold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::exact_size::ExactSizeIterator::len<'_0, Self>(@1: &'_0 (Self)) -> usize +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, fn core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, diff --git a/charon/tests/ui/issue-4-slice-try-into-array.out b/charon/tests/ui/issue-4-slice-try-into-array.out index 8b1b6dce..41ea5158 100644 --- a/charon/tests/ui/issue-4-slice-try-into-array.out +++ b/charon/tests/ui/issue-4-slice-try-into-array.out @@ -19,7 +19,7 @@ trait core::convert::TryFrom parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Sized type Error - fn try_from = core::convert::TryFrom::try_from + fn try_from = core::convert::TryFrom::try_from[Self] } fn core::convert::{impl core::convert::TryInto for T}#6::try_into(@1: T) -> core::result::Result[@TraitClause1, @TraitClause2::parent_clause2] @@ -31,8 +31,8 @@ where trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -78,7 +78,7 @@ struct core::fmt::Error = {} trait core::fmt::Debug { - fn fmt<'_0, '_1, '_2> = core::fmt::Debug::fmt<'_0_0, '_0_1, '_0_2, Self> + fn fmt<'_0, '_1, '_2> = core::fmt::Debug::fmt<'_0_0, '_0_1, '_0_2, Self>[Self] } fn core::result::{core::result::Result[@TraitClause0, @TraitClause1]}::unwrap(@1: core::result::Result[@TraitClause0, @TraitClause1]) -> T @@ -116,7 +116,9 @@ fn test_crate::trait_error<'_0>(@1: &'_0 (Slice)) return } -fn core::convert::TryInto::try_into(@1: Self) -> core::result::Result[Self::parent_clause1, Self::parent_clause2] +fn core::convert::TryInto::try_into(@1: Self) -> core::result::Result[@TraitClause0::parent_clause1, @TraitClause0::parent_clause2] +where + [@TraitClause0]: core::convert::TryInto, trait core::convert::TryInto { @@ -124,7 +126,7 @@ trait core::convert::TryInto parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Sized type Error - fn try_into = core::convert::TryInto::try_into + fn try_into = core::convert::TryInto::try_into[Self] } impl core::convert::{impl core::convert::TryInto for T}#6 : core::convert::TryInto @@ -140,13 +142,21 @@ where fn try_into = core::convert::{impl core::convert::TryInto for T}#6::try_into[@TraitClause0, @TraitClause1, @TraitClause2] } -fn core::convert::TryFrom::try_from(@1: T) -> core::result::Result[Self::parent_clause0, Self::parent_clause2] +fn core::convert::TryFrom::try_from(@1: T) -> core::result::Result[@TraitClause0::parent_clause0, @TraitClause0::parent_clause2] +where + [@TraitClause0]: core::convert::TryFrom, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::fmt::Debug::fmt<'_0, '_1, '_2, Self>(@1: &'_0 (Self), @2: &'_1 mut (core::fmt::Formatter<'_2>)) -> core::result::Result<(), core::fmt::Error>[core::marker::Sized<()>, core::marker::Sized] +where + [@TraitClause0]: core::fmt::Debug, diff --git a/charon/tests/ui/issue-4-traits.out b/charon/tests/ui/issue-4-traits.out index 8b1b6dce..41ea5158 100644 --- a/charon/tests/ui/issue-4-traits.out +++ b/charon/tests/ui/issue-4-traits.out @@ -19,7 +19,7 @@ trait core::convert::TryFrom parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Sized type Error - fn try_from = core::convert::TryFrom::try_from + fn try_from = core::convert::TryFrom::try_from[Self] } fn core::convert::{impl core::convert::TryInto for T}#6::try_into(@1: T) -> core::result::Result[@TraitClause1, @TraitClause2::parent_clause2] @@ -31,8 +31,8 @@ where trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -78,7 +78,7 @@ struct core::fmt::Error = {} trait core::fmt::Debug { - fn fmt<'_0, '_1, '_2> = core::fmt::Debug::fmt<'_0_0, '_0_1, '_0_2, Self> + fn fmt<'_0, '_1, '_2> = core::fmt::Debug::fmt<'_0_0, '_0_1, '_0_2, Self>[Self] } fn core::result::{core::result::Result[@TraitClause0, @TraitClause1]}::unwrap(@1: core::result::Result[@TraitClause0, @TraitClause1]) -> T @@ -116,7 +116,9 @@ fn test_crate::trait_error<'_0>(@1: &'_0 (Slice)) return } -fn core::convert::TryInto::try_into(@1: Self) -> core::result::Result[Self::parent_clause1, Self::parent_clause2] +fn core::convert::TryInto::try_into(@1: Self) -> core::result::Result[@TraitClause0::parent_clause1, @TraitClause0::parent_clause2] +where + [@TraitClause0]: core::convert::TryInto, trait core::convert::TryInto { @@ -124,7 +126,7 @@ trait core::convert::TryInto parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Sized type Error - fn try_into = core::convert::TryInto::try_into + fn try_into = core::convert::TryInto::try_into[Self] } impl core::convert::{impl core::convert::TryInto for T}#6 : core::convert::TryInto @@ -140,13 +142,21 @@ where fn try_into = core::convert::{impl core::convert::TryInto for T}#6::try_into[@TraitClause0, @TraitClause1, @TraitClause2] } -fn core::convert::TryFrom::try_from(@1: T) -> core::result::Result[Self::parent_clause0, Self::parent_clause2] +fn core::convert::TryFrom::try_from(@1: T) -> core::result::Result[@TraitClause0::parent_clause0, @TraitClause0::parent_clause2] +where + [@TraitClause0]: core::convert::TryFrom, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::fmt::Debug::fmt<'_0, '_1, '_2, Self>(@1: &'_0 (Self), @2: &'_1 mut (core::fmt::Formatter<'_2>)) -> core::result::Result<(), core::fmt::Error>[core::marker::Sized<()>, core::marker::Sized] +where + [@TraitClause0]: core::fmt::Debug, diff --git a/charon/tests/ui/issue-45-misc.out b/charon/tests/ui/issue-45-misc.out index 124cf061..d6ab338f 100644 --- a/charon/tests/ui/issue-45-misc.out +++ b/charon/tests/ui/issue-45-misc.out @@ -20,7 +20,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -28,7 +28,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } fn core::array::{Array}#23::map(@1: Array, @2: F) -> Array @@ -95,8 +95,8 @@ opaque type core::array::iter::IntoIter trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -237,7 +237,7 @@ opaque type core::iter::adapters::inspect::Inspect trait core::ops::try_trait::FromResidual { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn from_residual = core::ops::try_trait::FromResidual::from_residual + fn from_residual = core::ops::try_trait::FromResidual::from_residual[Self] } enum core::ops::control_flow::ControlFlow @@ -256,8 +256,8 @@ trait core::ops::try_trait::Try parent_clause2 : [@TraitClause2]: core::marker::Sized type Output type Residual - fn from_output = core::ops::try_trait::Try::from_output - fn branch = core::ops::try_trait::Try::branch + fn from_output = core::ops::try_trait::Try::from_output[Self] + fn branch = core::ops::try_trait::Try::branch[Self] } trait core::ops::try_trait::Residual @@ -275,19 +275,19 @@ where trait core::default::Default { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn default = core::default::Default::default + fn default = core::default::Default::default[Self] } trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Eq { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self> + fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self>[Self] } enum core::cmp::Ordering = @@ -299,21 +299,21 @@ enum core::cmp::Ordering = trait core::cmp::PartialOrd { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs> - fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs> - fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs> - fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs> - fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs> + fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs>[Self] + fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs>[Self] + fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs>[Self] + fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs>[Self] + fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Ord { parent_clause0 : [@TraitClause0]: core::cmp::Eq parent_clause1 : [@TraitClause1]: core::cmp::PartialOrd - fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self> - fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[@TraitClause0_0] - fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[@TraitClause0_0] - fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[@TraitClause0_0] + fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self>[Self] + fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[Self, @TraitClause0_0] + fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[Self, @TraitClause0_0] + fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[Self, @TraitClause0_0] } opaque type core::iter::adapters::rev::Rev @@ -336,83 +336,83 @@ trait core::iter::traits::iterator::Iterator { parent_clause0 : [@TraitClause0]: core::marker::Sized type Item - fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self> - fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[@TraitClause0_0] - fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self> - fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[@TraitClause0_0] - fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[@TraitClause0_0] - fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self> - fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self> - fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[@TraitClause0_0] - fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[@TraitClause0_0, @TraitClause0_1] - fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[@TraitClause0_0] - fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[@TraitClause0_0] - fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[@TraitClause0_0] - fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[@TraitClause0_0] - fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[@TraitClause0_0, @TraitClause0_1] - fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[@TraitClause0_0] - fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[@TraitClause0_0] - fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[@TraitClause0_0, @TraitClause0_1] - fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[@TraitClause0_0, @TraitClause0_1] - fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[@TraitClause0_0, @TraitClause0_1] - fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] - fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[@TraitClause0_0, @TraitClause0_1] - fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[@TraitClause0_0] - fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[@TraitClause0_0, @TraitClause0_1] - fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[@TraitClause0_0] + fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self>[Self] + fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[Self, @TraitClause0_0] + fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self>[Self] + fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[Self, @TraitClause0_0] + fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[Self, @TraitClause0_0] + fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self>[Self] + fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self>[Self] + fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[Self, @TraitClause0_0] + fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[Self, @TraitClause0_0, @TraitClause0_1] + fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[Self, @TraitClause0_0] + fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[Self, @TraitClause0_0] + fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[Self, @TraitClause0_0] + fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[Self, @TraitClause0_0] + fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[Self, @TraitClause0_0, @TraitClause0_1] + fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[Self, @TraitClause0_0] + fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[Self, @TraitClause0_0] + fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[Self, @TraitClause0_0, @TraitClause0_1] + fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[Self, @TraitClause0_0, @TraitClause0_1] + fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[Self, @TraitClause0_0, @TraitClause0_1] + fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] + fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[Self, @TraitClause0_0, @TraitClause0_1] + fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[Self, @TraitClause0_0] + fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[Self, @TraitClause0_0, @TraitClause0_1] + fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[Self, @TraitClause0_0] } trait core::iter::traits::collect::IntoIterator @@ -424,7 +424,7 @@ where parent_clause2 : [@TraitClause2]: core::marker::Sized type Item type IntoIter - fn into_iter = core::iter::traits::collect::IntoIterator::into_iter + fn into_iter = core::iter::traits::collect::IntoIterator::into_iter[Self] } opaque type core::iter::adapters::intersperse::Intersperse @@ -467,34 +467,34 @@ trait core::iter::traits::collect::FromIterator { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[@TraitClause0_0, @TraitClause0_1] + fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::collect::Extend { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[@TraitClause0_0, @TraitClause0_1] - fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A> - fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A> - fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[@TraitClause0_0] + fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[Self, @TraitClause0_0, @TraitClause0_1] + fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A>[Self] + fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A>[Self] + fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[Self, @TraitClause0_0] } trait core::iter::traits::double_ended::DoubleEndedIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self> - fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self> - fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self> - fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self>[Self] + fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self>[Self] + fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self>[Self] + fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] } trait core::iter::traits::exact_size::ExactSizeIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self> - fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self> + fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self>[Self] + fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self>[Self] } opaque type core::iter::adapters::array_chunks::ArrayChunks @@ -506,21 +506,21 @@ trait core::iter::traits::accum::Sum { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[@TraitClause0_0, @TraitClause0_1] + fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::accum::Product { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[@TraitClause0_0, @TraitClause0_1] + fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::adapters::zip::TrustedRandomAccessNoCoerce { parent_clause0 : [@TraitClause0]: core::marker::Sized const MAY_HAVE_SIDE_EFFECT : bool - fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[@TraitClause0_0] + fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[Self, @TraitClause0_0] } fn core::iter::traits::collect::{impl core::iter::traits::collect::IntoIterator for I}#1::into_iter(@1: I) -> I @@ -533,13 +533,13 @@ trait core::iter::range::Step parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::clone::Clone parent_clause2 : [@TraitClause2]: core::cmp::PartialOrd - fn steps_between<'_0, '_1> = core::iter::range::Step::steps_between<'_0_0, '_0_1, Self> - fn forward_checked = core::iter::range::Step::forward_checked - fn backward_checked = core::iter::range::Step::backward_checked - fn forward = core::iter::range::Step::forward - fn forward_unchecked = core::iter::range::Step::forward_unchecked - fn backward = core::iter::range::Step::backward - fn backward_unchecked = core::iter::range::Step::backward_unchecked + fn steps_between<'_0, '_1> = core::iter::range::Step::steps_between<'_0_0, '_0_1, Self>[Self] + fn forward_checked = core::iter::range::Step::forward_checked[Self] + fn backward_checked = core::iter::range::Step::backward_checked[Self] + fn forward = core::iter::range::Step::forward[Self] + fn forward_unchecked = core::iter::range::Step::forward_unchecked[Self] + fn backward = core::iter::range::Step::backward[Self] + fn backward_unchecked = core::iter::range::Step::backward_unchecked[Self] } fn core::iter::range::{impl core::iter::traits::iterator::Iterator for core::ops::range::Range[@TraitClause0]}#6::next<'_0, A>(@1: &'_0 mut (core::ops::range::Range[@TraitClause0])) -> core::option::Option[@TraitClause0] @@ -854,7 +854,9 @@ fn test_crate::select<'_0, '_1>(@1: &'_0 (Slice), @2: &'_1 (Slice)) return } -fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> Self::IntoIter +fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> @TraitClause0::IntoIter +where + [@TraitClause0]: core::iter::traits::collect::IntoIterator, impl core::iter::traits::collect::{impl core::iter::traits::collect::IntoIterator for I}#1 : core::iter::traits::collect::IntoIterator where @@ -869,660 +871,815 @@ where fn into_iter = core::iter::traits::collect::{impl core::iter::traits::collect::IntoIterator for I}#1::into_iter[@TraitClause0, @TraitClause1] } -fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, fn core::iter::range::Step::steps_between<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 (Self)) -> core::option::Option[core::marker::Sized] +where + [@TraitClause0]: core::iter::range::Step, -fn core::iter::range::Step::forward_checked(@1: Self, @2: usize) -> core::option::Option[Self::parent_clause0] +fn core::iter::range::Step::forward_checked(@1: Self, @2: usize) -> core::option::Option[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::range::Step, fn core::iter::range::Step::forward(@1: Self, @2: usize) -> Self +where + [@TraitClause0]: core::iter::range::Step, unsafe fn core::iter::range::Step::forward_unchecked(@1: Self, @2: usize) -> Self +where + [@TraitClause0]: core::iter::range::Step, -fn core::iter::range::Step::backward_checked(@1: Self, @2: usize) -> core::option::Option[Self::parent_clause0] +fn core::iter::range::Step::backward_checked(@1: Self, @2: usize) -> core::option::Option[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::range::Step, fn core::iter::range::Step::backward(@1: Self, @2: usize) -> Self +where + [@TraitClause0]: core::iter::range::Step, unsafe fn core::iter::range::Step::backward_unchecked(@1: Self, @2: usize) -> Self +where + [@TraitClause0]: core::iter::range::Step, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::cmp::PartialOrd::partial_cmp<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> core::option::Option[core::marker::Sized] +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::lt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::le<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::gt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::ge<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool - -fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter[Self::parent_clause0]>[core::marker::Sized>, core::marker::Sized[Self::parent_clause0]>] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::PartialEq, -fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause0] +fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter<@TraitClause0::Item, const N : usize>[@TraitClause0::parent_clause0]>[core::marker::Sized>, core::marker::Sized[@TraitClause0::parent_clause0]>] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, - @TraitClause2::Item = Self::Item, -fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, + @TraitClause3::Item = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: Self::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, -fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause1, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: @TraitClause0::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause2]: core::clone::Clone<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause2, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, - -fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = (), + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause0] +fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause0] +fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, - -fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause3, @TraitClause0, @TraitClause2] +fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause2, @TraitClause0, @TraitClause1, @TraitClause3] +fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = U, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause2, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause4, @TraitClause1, @TraitClause3] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, - for<'_0> @TraitClause3::parent_clause0::Output = R, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = core::option::Option[@TraitClause2], -fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause0] +fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause3, @TraitClause1, @TraitClause2, @TraitClause4] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = U, -fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = (), + [@TraitClause2]: core::iter::traits::collect::IntoIterator<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) +fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause3, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: for<'_0> core::ops::function::FnMut))>, + for<'_0> @TraitClause4::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::FromIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause2, @TraitClause1] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause3::TryType +fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::try_trait::Try, - [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause2::Residual, B>, - [@TraitClause4]: core::iter::traits::collect::FromIterator, -fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::Extend, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::FromIterator, + [@TraitClause3]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause4::TryType +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::try_trait::Try<@TraitClause0::Item>, + [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, B>, + [@TraitClause5]: core::iter::traits::collect::FromIterator, + +fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::Extend, + [@TraitClause3]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partition(@1: Self, @2: F) -> (B, B) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::default::Default, - [@TraitClause4]: core::iter::traits::collect::Extend, - [@TraitClause5]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause5::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::default::Default, + [@TraitClause5]: core::iter::traits::collect::Extend, + [@TraitClause6]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause6::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>(@1: Self, @2: P) -> usize where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized

, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, T : 'a, - Self::Item = &'a mut (T), - for<'_0> @TraitClause4::parent_clause0::Output = bool, + @TraitClause0::Item = &'a mut (T), + for<'_0> @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_partitioned(@1: Self, @2: P) -> bool where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::try_fold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, + +fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + @TraitClause5::Output = (), -fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::ops::try_trait::Try, - @TraitClause3::parent_clause0::Output = R, - @TraitClause4::Output = (), + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B +fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: core::ops::function::FnMut R, (@TraitClause0::Item, @TraitClause0::Item)>, + @TraitClause4::Output = @TraitClause0::Item, + @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, - @TraitClause3::Output = Self::Item, - @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause0] +fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (@TraitClause0::Item))>, + @TraitClause4::Output = bool, + for<'_0> @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, - @TraitClause3::Output = bool, - for<'_0> @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::exact_size::ExactSizeIterator, + [@TraitClause5]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::ops::function::FnMut, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, - [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, - @TraitClause1::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, - -fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause2]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::iterator::Iterator::unzip(@1: Self) -> (FromA, FromB) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::default::Default, - [@TraitClause5]: core::iter::traits::collect::Extend, - [@TraitClause6]: core::default::Default, - [@TraitClause7]: core::iter::traits::collect::Extend, - [@TraitClause8]: core::marker::Sized, - [@TraitClause9]: core::iter::traits::iterator::Iterator, - Self::Item = (A, B), - -fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause1] + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::default::Default, + [@TraitClause6]: core::iter::traits::collect::Extend, + [@TraitClause7]: core::default::Default, + [@TraitClause8]: core::iter::traits::collect::Extend, + [@TraitClause9]: core::marker::Sized, + [@TraitClause10]: core::iter::traits::iterator::Iterator, + @TraitClause0::Item = (A, B), + +fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::marker::Copy, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::marker::Copy, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause1] +fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::clone::Clone, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause0] +fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::clone::Clone, -fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::sum(@1: Self) -> S where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Sum, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Sum, fn core::iter::traits::iterator::Iterator::product(@1: Self) -> P where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Product, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Product, fn core::iter::traits::iterator::Iterator::cmp(@1: Self, @2: I) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - @TraitClause1::Item = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::Ord<@TraitClause0::Item>, + [@TraitClause4]: core::marker::Sized, + @TraitClause2::Item = @TraitClause0::Item, fn core::iter::traits::iterator::Iterator::cmp_by(@1: Self, @2: I, @3: F) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::cmp::Ordering, fn core::iter::traits::iterator::Iterator::partial_cmp(@1: Self, @2: I) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partial_cmp_by(@1: Self, @2: I, @3: F) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::option::Option[core::marker::Sized], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::option::Option[core::marker::Sized], fn core::iter::traits::iterator::Iterator::eq(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::eq_by(@1: Self, @2: I, @3: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::ne(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::lt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::le(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::gt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::ge(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::is_sorted_by(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_sorted_by_key(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::cmp::PartialOrd, - @TraitClause3::parent_clause0::Output = K, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause5]: core::cmp::PartialOrd, + @TraitClause4::parent_clause0::Output = K, fn core::cmp::Ord::cmp<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 (Self)) -> core::cmp::Ordering +where + [@TraitClause0]: core::cmp::Ord, fn core::cmp::Ord::max(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::min(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::clamp(@1: Self, @2: Self, @3: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Eq::assert_receiver_is_total_eq<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: core::cmp::Eq, fn core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0, Self>(@1: &'_0 (Self)) -> usize where - [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause1]: core::iter::traits::iterator::Iterator, fn core::iter::traits::iterator::Iterator::size_hint<'_0, Self>(@1: &'_0 (Self)) -> (usize, core::option::Option[core::marker::Sized]) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, fn core::iter::traits::iterator::Iterator::count(@1: Self) -> usize where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::advance_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, fn core::iter::traits::iterator::Iterator::is_sorted(@1: Self) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::PartialOrd, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause0::Item>, -unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> Self::Item +unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> @TraitClause0::Item where - [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, fn core::default::Default::default() -> Self +where + [@TraitClause0]: core::default::Default, -fn core::ops::try_trait::Try::from_output(@1: Self::Output) -> Self +fn core::ops::try_trait::Try::from_output(@1: @TraitClause0::Output) -> Self +where + [@TraitClause0]: core::ops::try_trait::Try, -fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow[Self::parent_clause0::parent_clause0, Self::parent_clause1] +fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow<@TraitClause0::Residual, @TraitClause0::Output>[@TraitClause0::parent_clause0::parent_clause0, @TraitClause0::parent_clause1] +where + [@TraitClause0]: core::ops::try_trait::Try, fn core::ops::try_trait::FromResidual::from_residual(@1: R) -> Self +where + [@TraitClause0]: core::ops::try_trait::FromResidual, fn core::iter::traits::accum::Sum::sum(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Sum, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::accum::Product::product(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Product, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::FromIterator::from_iter(@1: T) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::FromIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend<'_0, Self, A, T>(@1: &'_0 mut (Self), @2: T) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend_one<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) +where + [@TraitClause0]: core::iter::traits::collect::Extend, fn core::iter::traits::collect::Extend::extend_reserve<'_0, Self, A>(@1: &'_0 mut (Self), @2: usize) +where + [@TraitClause0]: core::iter::traits::collect::Extend, unsafe fn core::iter::traits::collect::Extend::extend_one_unchecked<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, -fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, - [@TraitClause5]: core::ops::try_trait::Try, - @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, fn core::iter::traits::double_ended::DoubleEndedIterator::rfold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::exact_size::ExactSizeIterator::len<'_0, Self>(@1: &'_0 (Self)) -> usize +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, fn core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, diff --git a/charon/tests/ui/issue-70-override-provided-method.2.out b/charon/tests/ui/issue-70-override-provided-method.2.out index 73195837..f85395ac 100644 --- a/charon/tests/ui/issue-70-override-provided-method.2.out +++ b/charon/tests/ui/issue-70-override-provided-method.2.out @@ -2,16 +2,20 @@ trait test_crate::Trait { - fn required<'_0> = test_crate::Trait::required<'_0_0, Self> - fn provided1<'_0> = test_crate::Trait::provided1<'_0_0, Self> - fn provided2<'_0> = test_crate::Trait::provided2<'_0_0, Self> + fn required<'_0> = test_crate::Trait::required<'_0_0, Self>[Self] + fn provided1<'_0> = test_crate::Trait::provided1<'_0_0, Self>[Self] + fn provided2<'_0> = test_crate::Trait::provided2<'_0_0, Self>[Self] } struct test_crate::Foo = {} fn test_crate::Trait::required<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: test_crate::Trait, fn test_crate::Trait::provided1<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: test_crate::Trait, { let @0: (); // return let self@1: &'_ (Self); // arg #1 @@ -22,11 +26,11 @@ fn test_crate::Trait::provided1<'_0, Self>(@1: &'_0 (Self)) let @6: (); // anonymous local @3 := &*(self@1) - @2 := Self::required<'_>(move (@3)) + @2 := @TraitClause0::required<'_>(move (@3)) drop @3 drop @2 @5 := &*(self@1) - @4 := Self::provided2<'_>(move (@5)) + @4 := @TraitClause0::provided2<'_>(move (@5)) drop @5 drop @4 @6 := () @@ -36,6 +40,8 @@ fn test_crate::Trait::provided1<'_0, Self>(@1: &'_0 (Self)) } fn test_crate::Trait::provided2<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: test_crate::Trait, { let @0: (); // return let self@1: &'_ (Self); // arg #1 @@ -46,11 +52,11 @@ fn test_crate::Trait::provided2<'_0, Self>(@1: &'_0 (Self)) let @6: (); // anonymous local @3 := &*(self@1) - @2 := Self::required<'_>(move (@3)) + @2 := @TraitClause0::required<'_>(move (@3)) drop @3 drop @2 @5 := &*(self@1) - @4 := Self::provided1<'_>(move (@5)) + @4 := @TraitClause0::provided1<'_>(move (@5)) drop @5 drop @4 @6 := () diff --git a/charon/tests/ui/issue-70-override-provided-method.3.out b/charon/tests/ui/issue-70-override-provided-method.3.out index 6c976ee7..32bfb66b 100644 --- a/charon/tests/ui/issue-70-override-provided-method.3.out +++ b/charon/tests/ui/issue-70-override-provided-method.3.out @@ -5,22 +5,22 @@ trait core::marker::Sized trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } trait test_crate::GenericTrait { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::clone::Clone - fn other_method = test_crate::GenericTrait::other_method - fn provided, [@TraitClause1]: core::cmp::PartialEq> = test_crate::GenericTrait::provided[@TraitClause0_0, @TraitClause0_1] + fn other_method = test_crate::GenericTrait::other_method[Self] + fn provided, [@TraitClause1]: core::cmp::PartialEq> = test_crate::GenericTrait::provided[Self, @TraitClause0_0, @TraitClause0_1] } struct test_crate::Override @@ -79,6 +79,8 @@ where } fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn test_crate::{impl test_crate::GenericTrait[@TraitClause0]> for test_crate::Override[@TraitClause0]}::provided(@1: core::option::Option[@TraitClause0], @2: U) where @@ -159,11 +161,14 @@ where } fn test_crate::GenericTrait::other_method() +where + [@TraitClause0]: test_crate::GenericTrait, fn test_crate::GenericTrait::provided(@1: T, @2: U) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::PartialEq, + [@TraitClause0]: test_crate::GenericTrait, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::PartialEq, { let @0: (); // return let x@1: T; // arg #1 @@ -175,11 +180,11 @@ where @4 := &y@2 @5 := &x@1 - @3 := @TraitClause1::eq<'_, '_>(move (@4), move (@5)) + @3 := @TraitClause2::eq<'_, '_>(move (@4), move (@5)) if move (@3) { drop @5 drop @4 - @0 := Self::other_method() + @0 := @TraitClause0::other_method() } else { drop @5 @@ -195,10 +200,16 @@ where } fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, diff --git a/charon/tests/ui/issue-70-override-provided-method.out b/charon/tests/ui/issue-70-override-provided-method.out index 85c5d2f1..35a3ebad 100644 --- a/charon/tests/ui/issue-70-override-provided-method.out +++ b/charon/tests/ui/issue-70-override-provided-method.out @@ -12,8 +12,8 @@ enum core::option::Option trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } fn core::option::{impl core::cmp::PartialEq[@TraitClause0]> for core::option::Option[@TraitClause0]}#14::eq<'_0, '_1, T>(@1: &'_0 (core::option::Option[@TraitClause0]), @2: &'_1 (core::option::Option[@TraitClause0])) -> bool @@ -97,11 +97,11 @@ enum core::cmp::Ordering = trait core::cmp::PartialOrd { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs> - fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs> - fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs> - fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs> - fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs> + fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs>[Self] + fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs>[Self] + fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs>[Self] + fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs>[Self] + fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs>[Self] } fn core::cmp::impls::{impl core::cmp::PartialOrd for u32}#64::partial_cmp<'_0, '_1>(@1: &'_0 (u32), @2: &'_1 (u32)) -> core::option::Option[core::marker::Sized] @@ -135,6 +135,8 @@ impl test_crate::{impl core::cmp::PartialOrd for test_crate::Fo } fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, impl core::option::{impl core::cmp::PartialEq[@TraitClause0]> for core::option::Option[@TraitClause0]}#14 : core::cmp::PartialEq[@TraitClause0], core::option::Option[@TraitClause0]> where @@ -145,16 +147,28 @@ where } fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialOrd::lt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::le<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::gt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::ge<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::partial_cmp<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> core::option::Option[core::marker::Sized] +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::impls::{impl core::cmp::PartialEq for u32}#24::eq<'_0, '_1>(@1: &'_0 (u32), @2: &'_1 (u32)) -> bool diff --git a/charon/tests/ui/issue-72-hash-missing-impl.out b/charon/tests/ui/issue-72-hash-missing-impl.out index d8dcbcf5..e3c25d1d 100644 --- a/charon/tests/ui/issue-72-hash-missing-impl.out +++ b/charon/tests/ui/issue-72-hash-missing-impl.out @@ -10,7 +10,7 @@ trait core::marker::Sized trait test_crate::Hash { - fn hash<'_0, '_1, H, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: test_crate::Hasher> = test_crate::Hash::hash<'_0_0, '_0_1, Self, H>[@TraitClause0_0, @TraitClause0_1] + fn hash<'_0, '_1, H, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: test_crate::Hasher> = test_crate::Hash::hash<'_0_0, '_0_1, Self, H>[Self, @TraitClause0_0, @TraitClause0_1] } fn test_crate::{impl test_crate::Hash for u32}#1::hash<'_0, '_1, H>(@1: &'_0 (u32), @2: &'_1 mut (H)) @@ -66,8 +66,9 @@ fn test_crate::main() fn test_crate::Hash::hash<'_0, '_1, Self, H>(@1: &'_0 (Self), @2: &'_1 mut (H)) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: test_crate::Hasher, + [@TraitClause0]: test_crate::Hash, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: test_crate::Hasher, diff --git a/charon/tests/ui/issue-91-enum-to-discriminant-cast.out b/charon/tests/ui/issue-91-enum-to-discriminant-cast.out index 4d03c13b..b44fc81e 100644 --- a/charon/tests/ui/issue-91-enum-to-discriminant-cast.out +++ b/charon/tests/ui/issue-91-enum-to-discriminant-cast.out @@ -10,8 +10,8 @@ trait core::marker::Sized trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -135,8 +135,12 @@ fn test_crate::main() } fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, diff --git a/charon/tests/ui/issue-94-recursive-trait-defns.out b/charon/tests/ui/issue-94-recursive-trait-defns.out index d2d00b2b..fe856022 100644 --- a/charon/tests/ui/issue-94-recursive-trait-defns.out +++ b/charon/tests/ui/issue-94-recursive-trait-defns.out @@ -53,25 +53,29 @@ trait test_crate::T6 { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: test_crate::T7 - fn f = test_crate::T6::f + fn f = test_crate::T6::f[Self] } trait test_crate::T7 { parent_clause0 : [@TraitClause0]: test_crate::T6 - fn g = test_crate::T7::g + fn g = test_crate::T7::g[Self] } fn test_crate::T7::g(@1: u64) +where + [@TraitClause0]: test_crate::T7, fn test_crate::T6::f(@1: u64) +where + [@TraitClause0]: test_crate::T6, { let @0: (); // return let x@1: u64; // arg #1 let @2: u64; // anonymous local @2 := copy (x@1) - @0 := Self::parent_clause1::g(move (@2)) + @0 := @TraitClause0::parent_clause1::g(move (@2)) drop @2 @0 := () return diff --git a/charon/tests/ui/loops.out b/charon/tests/ui/loops.out index 6b9f1191..558fcf63 100644 --- a/charon/tests/ui/loops.out +++ b/charon/tests/ui/loops.out @@ -803,8 +803,8 @@ opaque type core::array::iter::IntoIter trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -893,7 +893,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -901,7 +901,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } opaque type core::iter::adapters::map::Map @@ -964,7 +964,7 @@ opaque type core::iter::adapters::inspect::Inspect trait core::ops::try_trait::FromResidual { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn from_residual = core::ops::try_trait::FromResidual::from_residual + fn from_residual = core::ops::try_trait::FromResidual::from_residual[Self] } enum core::ops::control_flow::ControlFlow @@ -983,8 +983,8 @@ trait core::ops::try_trait::Try parent_clause2 : [@TraitClause2]: core::marker::Sized type Output type Residual - fn from_output = core::ops::try_trait::Try::from_output - fn branch = core::ops::try_trait::Try::branch + fn from_output = core::ops::try_trait::Try::from_output[Self] + fn branch = core::ops::try_trait::Try::branch[Self] } trait core::ops::try_trait::Residual @@ -1002,19 +1002,19 @@ where trait core::default::Default { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn default = core::default::Default::default + fn default = core::default::Default::default[Self] } trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Eq { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self> + fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self>[Self] } enum core::cmp::Ordering = @@ -1026,21 +1026,21 @@ enum core::cmp::Ordering = trait core::cmp::PartialOrd { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs> - fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs> - fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs> - fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs> - fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs> + fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs>[Self] + fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs>[Self] + fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs>[Self] + fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs>[Self] + fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Ord { parent_clause0 : [@TraitClause0]: core::cmp::Eq parent_clause1 : [@TraitClause1]: core::cmp::PartialOrd - fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self> - fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[@TraitClause0_0] - fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[@TraitClause0_0] - fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[@TraitClause0_0] + fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self>[Self] + fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[Self, @TraitClause0_0] + fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[Self, @TraitClause0_0] + fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[Self, @TraitClause0_0] } opaque type core::iter::adapters::rev::Rev @@ -1063,83 +1063,83 @@ trait core::iter::traits::iterator::Iterator { parent_clause0 : [@TraitClause0]: core::marker::Sized type Item - fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self> - fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[@TraitClause0_0] - fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self> - fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[@TraitClause0_0] - fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[@TraitClause0_0] - fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self> - fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self> - fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[@TraitClause0_0] - fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[@TraitClause0_0, @TraitClause0_1] - fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[@TraitClause0_0] - fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[@TraitClause0_0] - fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[@TraitClause0_0] - fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[@TraitClause0_0] - fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[@TraitClause0_0, @TraitClause0_1] - fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[@TraitClause0_0] - fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[@TraitClause0_0] - fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[@TraitClause0_0, @TraitClause0_1] - fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[@TraitClause0_0, @TraitClause0_1] - fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[@TraitClause0_0, @TraitClause0_1] - fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] - fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[@TraitClause0_0, @TraitClause0_1] - fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[@TraitClause0_0] - fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[@TraitClause0_0, @TraitClause0_1] - fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[@TraitClause0_0] + fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self>[Self] + fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[Self, @TraitClause0_0] + fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self>[Self] + fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[Self, @TraitClause0_0] + fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[Self, @TraitClause0_0] + fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self>[Self] + fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self>[Self] + fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[Self, @TraitClause0_0] + fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[Self, @TraitClause0_0, @TraitClause0_1] + fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[Self, @TraitClause0_0] + fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[Self, @TraitClause0_0] + fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[Self, @TraitClause0_0] + fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[Self, @TraitClause0_0] + fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[Self, @TraitClause0_0, @TraitClause0_1] + fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[Self, @TraitClause0_0] + fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[Self, @TraitClause0_0] + fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[Self, @TraitClause0_0, @TraitClause0_1] + fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[Self, @TraitClause0_0, @TraitClause0_1] + fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[Self, @TraitClause0_0, @TraitClause0_1] + fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] + fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[Self, @TraitClause0_0, @TraitClause0_1] + fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[Self, @TraitClause0_0] + fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[Self, @TraitClause0_0, @TraitClause0_1] + fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[Self, @TraitClause0_0] } trait core::iter::traits::collect::IntoIterator @@ -1151,7 +1151,7 @@ where parent_clause2 : [@TraitClause2]: core::marker::Sized type Item type IntoIter - fn into_iter = core::iter::traits::collect::IntoIterator::into_iter + fn into_iter = core::iter::traits::collect::IntoIterator::into_iter[Self] } opaque type core::iter::adapters::intersperse::Intersperse @@ -1194,34 +1194,34 @@ trait core::iter::traits::collect::FromIterator { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[@TraitClause0_0, @TraitClause0_1] + fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::collect::Extend { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[@TraitClause0_0, @TraitClause0_1] - fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A> - fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A> - fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[@TraitClause0_0] + fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[Self, @TraitClause0_0, @TraitClause0_1] + fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A>[Self] + fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A>[Self] + fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[Self, @TraitClause0_0] } trait core::iter::traits::double_ended::DoubleEndedIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self> - fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self> - fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self> - fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self>[Self] + fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self>[Self] + fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self>[Self] + fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] } trait core::iter::traits::exact_size::ExactSizeIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self> - fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self> + fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self>[Self] + fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self>[Self] } opaque type core::iter::adapters::array_chunks::ArrayChunks @@ -1233,21 +1233,21 @@ trait core::iter::traits::accum::Sum { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[@TraitClause0_0, @TraitClause0_1] + fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::accum::Product { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[@TraitClause0_0, @TraitClause0_1] + fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::adapters::zip::TrustedRandomAccessNoCoerce { parent_clause0 : [@TraitClause0]: core::marker::Sized const MAY_HAVE_SIDE_EFFECT : bool - fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[@TraitClause0_0] + fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[Self, @TraitClause0_0] } fn core::iter::traits::collect::{impl core::iter::traits::collect::IntoIterator for I}#1::into_iter(@1: I) -> I @@ -1260,13 +1260,13 @@ trait core::iter::range::Step parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::clone::Clone parent_clause2 : [@TraitClause2]: core::cmp::PartialOrd - fn steps_between<'_0, '_1> = core::iter::range::Step::steps_between<'_0_0, '_0_1, Self> - fn forward_checked = core::iter::range::Step::forward_checked - fn backward_checked = core::iter::range::Step::backward_checked - fn forward = core::iter::range::Step::forward - fn forward_unchecked = core::iter::range::Step::forward_unchecked - fn backward = core::iter::range::Step::backward - fn backward_unchecked = core::iter::range::Step::backward_unchecked + fn steps_between<'_0, '_1> = core::iter::range::Step::steps_between<'_0_0, '_0_1, Self>[Self] + fn forward_checked = core::iter::range::Step::forward_checked[Self] + fn backward_checked = core::iter::range::Step::backward_checked[Self] + fn forward = core::iter::range::Step::forward[Self] + fn forward_unchecked = core::iter::range::Step::forward_unchecked[Self] + fn backward = core::iter::range::Step::backward[Self] + fn backward_unchecked = core::iter::range::Step::backward_unchecked[Self] } fn core::iter::range::{impl core::iter::traits::iterator::Iterator for core::ops::range::Range[@TraitClause0]}#6::next<'_0, A>(@1: &'_0 mut (core::ops::range::Range[@TraitClause0])) -> core::option::Option[@TraitClause0] @@ -1894,18 +1894,18 @@ trait core::slice::index::SliceIndex { parent_clause0 : [@TraitClause0]: core::slice::index::private_slice_index::Sealed type Output - fn get<'_0> = core::slice::index::SliceIndex::get<'_0_0, Self, T> - fn get_mut<'_0> = core::slice::index::SliceIndex::get_mut<'_0_0, Self, T> - fn get_unchecked = core::slice::index::SliceIndex::get_unchecked - fn get_unchecked_mut = core::slice::index::SliceIndex::get_unchecked_mut - fn index<'_0> = core::slice::index::SliceIndex::index<'_0_0, Self, T> - fn index_mut<'_0> = core::slice::index::SliceIndex::index_mut<'_0_0, Self, T> + fn get<'_0> = core::slice::index::SliceIndex::get<'_0_0, Self, T>[Self] + fn get_mut<'_0> = core::slice::index::SliceIndex::get_mut<'_0_0, Self, T>[Self] + fn get_unchecked = core::slice::index::SliceIndex::get_unchecked[Self] + fn get_unchecked_mut = core::slice::index::SliceIndex::get_unchecked_mut[Self] + fn index<'_0> = core::slice::index::SliceIndex::index<'_0_0, Self, T>[Self] + fn index_mut<'_0> = core::slice::index::SliceIndex::index_mut<'_0_0, Self, T>[Self] } trait core::ops::index::Index { type Output - fn index<'_0> = core::ops::index::Index::index<'_0_0, Self, Idx> + fn index<'_0> = core::ops::index::Index::index<'_0_0, Self, Idx>[Self] } fn alloc::vec::{impl core::ops::index::Index for alloc::vec::Vec[@TraitClause0, @TraitClause2]}#13::index<'_0, T, I, A>(@1: &'_0 (alloc::vec::Vec[@TraitClause0, @TraitClause2]), @2: I) -> &'_0 (alloc::vec::{impl core::ops::index::Index for alloc::vec::Vec[@TraitClause0, @TraitClause2]}#13[@TraitClause0, @TraitClause1, @TraitClause2, @TraitClause3]::Output) @@ -2150,7 +2150,9 @@ where } } -fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> Self::IntoIter +fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> @TraitClause0::IntoIter +where + [@TraitClause0]: core::iter::traits::collect::IntoIterator, impl core::iter::traits::collect::{impl core::iter::traits::collect::IntoIterator for I}#1 : core::iter::traits::collect::IntoIterator where @@ -2165,14 +2167,18 @@ where fn into_iter = core::iter::traits::collect::{impl core::iter::traits::collect::IntoIterator for I}#1::into_iter[@TraitClause0, @TraitClause1] } -fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::ops::index::IndexMut::index_mut<'_0, Self, Idx>(@1: &'_0 mut (Self), @2: Idx) -> &'_0 mut (Self::parent_clause0::Output) +fn core::ops::index::IndexMut::index_mut<'_0, Self, Idx>(@1: &'_0 mut (Self), @2: Idx) -> &'_0 mut (@TraitClause0::parent_clause0::Output) +where + [@TraitClause0]: core::ops::index::IndexMut, trait core::ops::index::IndexMut { parent_clause0 : [@TraitClause0]: core::ops::index::Index - fn index_mut<'_0> = core::ops::index::IndexMut::index_mut<'_0_0, Self, Idx> + fn index_mut<'_0> = core::ops::index::IndexMut::index_mut<'_0_0, Self, Idx>[Self] } impl alloc::vec::{impl core::ops::index::IndexMut for alloc::vec::Vec[@TraitClause0, @TraitClause2]}#14 : core::ops::index::IndexMut[@TraitClause0, @TraitClause2], I> @@ -2187,671 +2193,838 @@ where } fn core::iter::range::Step::steps_between<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 (Self)) -> core::option::Option[core::marker::Sized] +where + [@TraitClause0]: core::iter::range::Step, -fn core::iter::range::Step::forward_checked(@1: Self, @2: usize) -> core::option::Option[Self::parent_clause0] +fn core::iter::range::Step::forward_checked(@1: Self, @2: usize) -> core::option::Option[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::range::Step, fn core::iter::range::Step::forward(@1: Self, @2: usize) -> Self +where + [@TraitClause0]: core::iter::range::Step, unsafe fn core::iter::range::Step::forward_unchecked(@1: Self, @2: usize) -> Self +where + [@TraitClause0]: core::iter::range::Step, -fn core::iter::range::Step::backward_checked(@1: Self, @2: usize) -> core::option::Option[Self::parent_clause0] +fn core::iter::range::Step::backward_checked(@1: Self, @2: usize) -> core::option::Option[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::range::Step, fn core::iter::range::Step::backward(@1: Self, @2: usize) -> Self +where + [@TraitClause0]: core::iter::range::Step, unsafe fn core::iter::range::Step::backward_unchecked(@1: Self, @2: usize) -> Self +where + [@TraitClause0]: core::iter::range::Step, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::cmp::PartialOrd::partial_cmp<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> core::option::Option[core::marker::Sized] +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::lt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::le<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::gt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::ge<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool - -fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter[Self::parent_clause0]>[core::marker::Sized>, core::marker::Sized[Self::parent_clause0]>] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::PartialEq, -fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause0] +fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter<@TraitClause0::Item, const N : usize>[@TraitClause0::parent_clause0]>[core::marker::Sized>, core::marker::Sized[@TraitClause0::parent_clause0]>] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, - @TraitClause2::Item = Self::Item, -fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, + @TraitClause3::Item = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: Self::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, -fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause1, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: @TraitClause0::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause2]: core::clone::Clone<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause2, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, - -fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = (), + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause0] +fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], - -fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause0] +fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause3, @TraitClause0, @TraitClause2] +fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause2, @TraitClause0, @TraitClause1, @TraitClause3] +fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = U, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause2, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause4, @TraitClause1, @TraitClause3] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, - for<'_0> @TraitClause3::parent_clause0::Output = R, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = core::option::Option[@TraitClause2], -fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause0] +fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause3, @TraitClause1, @TraitClause2, @TraitClause4] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = U, -fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = (), + [@TraitClause2]: core::iter::traits::collect::IntoIterator<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) +fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause3, @TraitClause1, @TraitClause0] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: for<'_0> core::ops::function::FnMut))>, + for<'_0> @TraitClause4::parent_clause0::Output = R, + +fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::FromIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause3::TryType +fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::try_trait::Try, - [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause2::Residual, B>, - [@TraitClause4]: core::iter::traits::collect::FromIterator, -fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::FromIterator, + [@TraitClause3]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause4::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::Extend, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::try_trait::Try<@TraitClause0::Item>, + [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, B>, + [@TraitClause5]: core::iter::traits::collect::FromIterator, + +fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::Extend, + [@TraitClause3]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partition(@1: Self, @2: F) -> (B, B) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::default::Default, - [@TraitClause4]: core::iter::traits::collect::Extend, - [@TraitClause5]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause5::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::default::Default, + [@TraitClause5]: core::iter::traits::collect::Extend, + [@TraitClause6]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause6::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>(@1: Self, @2: P) -> usize where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized

, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, T : 'a, - Self::Item = &'a mut (T), - for<'_0> @TraitClause4::parent_clause0::Output = bool, + @TraitClause0::Item = &'a mut (T), + for<'_0> @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_partitioned(@1: Self, @2: P) -> bool where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::try_fold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, + +fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + @TraitClause5::Output = (), -fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::ops::try_trait::Try, - @TraitClause3::parent_clause0::Output = R, - @TraitClause4::Output = (), + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B +fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: core::ops::function::FnMut R, (@TraitClause0::Item, @TraitClause0::Item)>, + @TraitClause4::Output = @TraitClause0::Item, + @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, - @TraitClause3::Output = Self::Item, - @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause0] +fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (@TraitClause0::Item))>, + @TraitClause4::Output = bool, + for<'_0> @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, - @TraitClause3::Output = bool, - for<'_0> @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::exact_size::ExactSizeIterator, + [@TraitClause5]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::ops::function::FnMut, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, - [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, - @TraitClause1::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, - -fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause2]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::iterator::Iterator::unzip(@1: Self) -> (FromA, FromB) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::default::Default, - [@TraitClause5]: core::iter::traits::collect::Extend, - [@TraitClause6]: core::default::Default, - [@TraitClause7]: core::iter::traits::collect::Extend, - [@TraitClause8]: core::marker::Sized, - [@TraitClause9]: core::iter::traits::iterator::Iterator, - Self::Item = (A, B), - -fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause1] + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::default::Default, + [@TraitClause6]: core::iter::traits::collect::Extend, + [@TraitClause7]: core::default::Default, + [@TraitClause8]: core::iter::traits::collect::Extend, + [@TraitClause9]: core::marker::Sized, + [@TraitClause10]: core::iter::traits::iterator::Iterator, + @TraitClause0::Item = (A, B), + +fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::marker::Copy, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::marker::Copy, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause1] +fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::clone::Clone, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause0] +fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::clone::Clone, -fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::sum(@1: Self) -> S where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Sum, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Sum, fn core::iter::traits::iterator::Iterator::product(@1: Self) -> P where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Product, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Product, fn core::iter::traits::iterator::Iterator::cmp(@1: Self, @2: I) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - @TraitClause1::Item = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::Ord<@TraitClause0::Item>, + [@TraitClause4]: core::marker::Sized, + @TraitClause2::Item = @TraitClause0::Item, fn core::iter::traits::iterator::Iterator::cmp_by(@1: Self, @2: I, @3: F) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::cmp::Ordering, fn core::iter::traits::iterator::Iterator::partial_cmp(@1: Self, @2: I) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partial_cmp_by(@1: Self, @2: I, @3: F) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::option::Option[core::marker::Sized], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::option::Option[core::marker::Sized], fn core::iter::traits::iterator::Iterator::eq(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::eq_by(@1: Self, @2: I, @3: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::ne(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::lt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::le(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::gt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::ge(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::is_sorted_by(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_sorted_by_key(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::cmp::PartialOrd, - @TraitClause3::parent_clause0::Output = K, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause5]: core::cmp::PartialOrd, + @TraitClause4::parent_clause0::Output = K, fn core::cmp::Ord::cmp<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 (Self)) -> core::cmp::Ordering +where + [@TraitClause0]: core::cmp::Ord, fn core::cmp::Ord::max(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::min(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::clamp(@1: Self, @2: Self, @3: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Eq::assert_receiver_is_total_eq<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: core::cmp::Eq, fn core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0, Self>(@1: &'_0 (Self)) -> usize where - [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause1]: core::iter::traits::iterator::Iterator, fn core::iter::traits::iterator::Iterator::size_hint<'_0, Self>(@1: &'_0 (Self)) -> (usize, core::option::Option[core::marker::Sized]) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, fn core::iter::traits::iterator::Iterator::count(@1: Self) -> usize where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::advance_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, fn core::iter::traits::iterator::Iterator::is_sorted(@1: Self) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::PartialOrd, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause0::Item>, -unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> Self::Item +unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> @TraitClause0::Item where - [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, fn core::default::Default::default() -> Self +where + [@TraitClause0]: core::default::Default, -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, -fn core::ops::try_trait::Try::from_output(@1: Self::Output) -> Self +fn core::ops::try_trait::Try::from_output(@1: @TraitClause0::Output) -> Self +where + [@TraitClause0]: core::ops::try_trait::Try, -fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow[Self::parent_clause0::parent_clause0, Self::parent_clause1] +fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow<@TraitClause0::Residual, @TraitClause0::Output>[@TraitClause0::parent_clause0::parent_clause0, @TraitClause0::parent_clause1] +where + [@TraitClause0]: core::ops::try_trait::Try, fn core::ops::try_trait::FromResidual::from_residual(@1: R) -> Self +where + [@TraitClause0]: core::ops::try_trait::FromResidual, fn core::iter::traits::accum::Sum::sum(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Sum, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::accum::Product::product(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Product, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::FromIterator::from_iter(@1: T) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::FromIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend<'_0, Self, A, T>(@1: &'_0 mut (Self), @2: T) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend_one<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) +where + [@TraitClause0]: core::iter::traits::collect::Extend, fn core::iter::traits::collect::Extend::extend_reserve<'_0, Self, A>(@1: &'_0 mut (Self), @2: usize) +where + [@TraitClause0]: core::iter::traits::collect::Extend, unsafe fn core::iter::traits::collect::Extend::extend_one_unchecked<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, -fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, - [@TraitClause5]: core::ops::try_trait::Try, - @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, fn core::iter::traits::double_ended::DoubleEndedIterator::rfold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::exact_size::ExactSizeIterator::len<'_0, Self>(@1: &'_0 (Self)) -> usize +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, fn core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, -fn core::slice::index::SliceIndex::get<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> core::option::Option<&'_0 (Self::Output)>[core::marker::Sized<&'_0 (Self::Output)>] +fn core::slice::index::SliceIndex::get<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> core::option::Option<&'_0 (@TraitClause0::Output)>[core::marker::Sized<&'_0 (@TraitClause0::Output)>] +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::slice::index::SliceIndex::get_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> core::option::Option<&'_0 mut (Self::Output)>[core::marker::Sized<&'_0 mut (Self::Output)>] +fn core::slice::index::SliceIndex::get_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> core::option::Option<&'_0 mut (@TraitClause0::Output)>[core::marker::Sized<&'_0 mut (@TraitClause0::Output)>] +where + [@TraitClause0]: core::slice::index::SliceIndex, -unsafe fn core::slice::index::SliceIndex::get_unchecked(@1: Self, @2: *const T) -> *const Self::Output +unsafe fn core::slice::index::SliceIndex::get_unchecked(@1: Self, @2: *const T) -> *const @TraitClause0::Output +where + [@TraitClause0]: core::slice::index::SliceIndex, -unsafe fn core::slice::index::SliceIndex::get_unchecked_mut(@1: Self, @2: *mut T) -> *mut Self::Output +unsafe fn core::slice::index::SliceIndex::get_unchecked_mut(@1: Self, @2: *mut T) -> *mut @TraitClause0::Output +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::slice::index::SliceIndex::index<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> &'_0 (Self::Output) +fn core::slice::index::SliceIndex::index<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> &'_0 (@TraitClause0::Output) +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::slice::index::SliceIndex::index_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> &'_0 mut (Self::Output) +fn core::slice::index::SliceIndex::index_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> &'_0 mut (@TraitClause0::Output) +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::ops::index::Index::index<'_0, Self, Idx>(@1: &'_0 (Self), @2: Idx) -> &'_0 (Self::Output) +fn core::ops::index::Index::index<'_0, Self, Idx>(@1: &'_0 (Self), @2: Idx) -> &'_0 (@TraitClause0::Output) +where + [@TraitClause0]: core::ops::index::Index, diff --git a/charon/tests/ui/method-impl-generalization.out b/charon/tests/ui/method-impl-generalization.out index 563d70a7..b28edaa1 100644 --- a/charon/tests/ui/method-impl-generalization.out +++ b/charon/tests/ui/method-impl-generalization.out @@ -5,8 +5,8 @@ trait core::marker::Sized trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -17,8 +17,8 @@ trait core::marker::Copy trait test_crate::Trait { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn method1 = test_crate::Trait::method1 - fn method2, [@TraitClause1]: core::marker::Copy> = test_crate::Trait::method2[@TraitClause0_0, @TraitClause0_1] + fn method1 = test_crate::Trait::method1[Self] + fn method2, [@TraitClause1]: core::marker::Copy> = test_crate::Trait::method2[Self, @TraitClause0_0, @TraitClause0_1] } fn test_crate::{impl test_crate::Trait for ()}::method1(@1: (), @2: &'static (u32)) -> bool @@ -58,7 +58,7 @@ trait test_crate::MyCompare { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn compare = test_crate::MyCompare::compare + fn compare = test_crate::MyCompare::compare[Self] } fn test_crate::{impl test_crate::MyCompare<&'a (())> for &'a (())}#1::compare<'a>(@1: &'a (()), @2: &'a (())) -> bool @@ -130,7 +130,7 @@ fn test_crate::main() trait test_crate::Foo { - fn foo<'a, 'b> = test_crate::Foo::foo<'a, 'b, Self> + fn foo<'a, 'b> = test_crate::Foo::foo<'a, 'b, Self>[Self] } fn test_crate::{impl test_crate::Foo for ()}#2::foo<'a, 'b>(@1: &'b (()), @2: &'a (())) -> &'b (()) @@ -174,19 +174,30 @@ fn test_crate::call_foo<'e>(@1: &'e (())) -> &'e (()) } fn test_crate::Trait::method1(@1: Self, @2: &'static (u32)) -> bool +where + [@TraitClause0]: test_crate::Trait, fn test_crate::Trait::method2(@1: Self, @2: T) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Copy, + [@TraitClause0]: test_crate::Trait, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Copy, fn test_crate::MyCompare::compare(@1: Self, @2: Other) -> bool +where + [@TraitClause0]: test_crate::MyCompare, fn test_crate::Foo::foo<'a, 'b, Self>(@1: &'a (()), @2: &'b (())) -> &'a (()) +where + [@TraitClause0]: test_crate::Foo, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, diff --git a/charon/tests/ui/ml-name-matcher-tests.out b/charon/tests/ui/ml-name-matcher-tests.out index 76be287a..b735a550 100644 --- a/charon/tests/ui/ml-name-matcher-tests.out +++ b/charon/tests/ui/ml-name-matcher-tests.out @@ -16,7 +16,7 @@ trait core::marker::Sized trait test_crate::Trait { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn method> = test_crate::Trait::method[@TraitClause0_0] + fn method> = test_crate::Trait::method[Self, @TraitClause0_0] } struct alloc::alloc::Global = {} @@ -93,12 +93,12 @@ trait core::slice::index::SliceIndex { parent_clause0 : [@TraitClause0]: core::slice::index::private_slice_index::Sealed type Output - fn get<'_0> = core::slice::index::SliceIndex::get<'_0_0, Self, T> - fn get_mut<'_0> = core::slice::index::SliceIndex::get_mut<'_0_0, Self, T> - fn get_unchecked = core::slice::index::SliceIndex::get_unchecked - fn get_unchecked_mut = core::slice::index::SliceIndex::get_unchecked_mut - fn index<'_0> = core::slice::index::SliceIndex::index<'_0_0, Self, T> - fn index_mut<'_0> = core::slice::index::SliceIndex::index_mut<'_0_0, Self, T> + fn get<'_0> = core::slice::index::SliceIndex::get<'_0_0, Self, T>[Self] + fn get_mut<'_0> = core::slice::index::SliceIndex::get_mut<'_0_0, Self, T>[Self] + fn get_unchecked = core::slice::index::SliceIndex::get_unchecked[Self] + fn get_unchecked_mut = core::slice::index::SliceIndex::get_unchecked_mut[Self] + fn index<'_0> = core::slice::index::SliceIndex::index<'_0_0, Self, T>[Self] + fn index_mut<'_0> = core::slice::index::SliceIndex::index_mut<'_0_0, Self, T>[Self] } fn core::slice::index::{impl core::ops::index::Index for Slice}::index<'_0, T, I>(@1: &'_0 (Slice), @2: I) -> &'_0 (@TraitClause2::Output) @@ -196,14 +196,17 @@ fn test_crate::foo() fn test_crate::Trait::method() where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: test_crate::Trait, + [@TraitClause1]: core::marker::Sized, -fn core::ops::index::Index::index<'_0, Self, Idx>(@1: &'_0 (Self), @2: Idx) -> &'_0 (Self::Output) +fn core::ops::index::Index::index<'_0, Self, Idx>(@1: &'_0 (Self), @2: Idx) -> &'_0 (@TraitClause0::Output) +where + [@TraitClause0]: core::ops::index::Index, trait core::ops::index::Index { type Output - fn index<'_0> = core::ops::index::Index::index<'_0_0, Self, Idx> + fn index<'_0> = core::ops::index::Index::index<'_0_0, Self, Idx>[Self] } impl core::slice::index::{impl core::ops::index::Index for Slice} : core::ops::index::Index, I> @@ -216,17 +219,29 @@ where fn index<'_0> = core::slice::index::{impl core::ops::index::Index for Slice}::index<'_0_0, T, I>[@TraitClause0, @TraitClause1, @TraitClause2] } -fn core::slice::index::SliceIndex::get<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> core::option::Option<&'_0 (Self::Output)>[core::marker::Sized<&'_0 (Self::Output)>] +fn core::slice::index::SliceIndex::get<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> core::option::Option<&'_0 (@TraitClause0::Output)>[core::marker::Sized<&'_0 (@TraitClause0::Output)>] +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::slice::index::SliceIndex::get_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> core::option::Option<&'_0 mut (Self::Output)>[core::marker::Sized<&'_0 mut (Self::Output)>] +fn core::slice::index::SliceIndex::get_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> core::option::Option<&'_0 mut (@TraitClause0::Output)>[core::marker::Sized<&'_0 mut (@TraitClause0::Output)>] +where + [@TraitClause0]: core::slice::index::SliceIndex, -unsafe fn core::slice::index::SliceIndex::get_unchecked(@1: Self, @2: *const T) -> *const Self::Output +unsafe fn core::slice::index::SliceIndex::get_unchecked(@1: Self, @2: *const T) -> *const @TraitClause0::Output +where + [@TraitClause0]: core::slice::index::SliceIndex, -unsafe fn core::slice::index::SliceIndex::get_unchecked_mut(@1: Self, @2: *mut T) -> *mut Self::Output +unsafe fn core::slice::index::SliceIndex::get_unchecked_mut(@1: Self, @2: *mut T) -> *mut @TraitClause0::Output +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::slice::index::SliceIndex::index<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> &'_0 (Self::Output) +fn core::slice::index::SliceIndex::index<'_0, Self, T>(@1: Self, @2: &'_0 (T)) -> &'_0 (@TraitClause0::Output) +where + [@TraitClause0]: core::slice::index::SliceIndex, -fn core::slice::index::SliceIndex::index_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> &'_0 mut (Self::Output) +fn core::slice::index::SliceIndex::index_mut<'_0, Self, T>(@1: Self, @2: &'_0 mut (T)) -> &'_0 mut (@TraitClause0::Output) +where + [@TraitClause0]: core::slice::index::SliceIndex, diff --git a/charon/tests/ui/no_nested_borrows.out b/charon/tests/ui/no_nested_borrows.out index 9fb850e6..f7649221 100644 --- a/charon/tests/ui/no_nested_borrows.out +++ b/charon/tests/ui/no_nested_borrows.out @@ -637,15 +637,17 @@ fn test_crate::read_then_incr<'_0>(@1: &'_0 mut (u32)) -> u32 trait core::ops::deref::Deref { type Target - fn deref<'_0> = core::ops::deref::Deref::deref<'_0_0, Self> + fn deref<'_0> = core::ops::deref::Deref::deref<'_0_0, Self>[Self] } -fn core::ops::deref::DerefMut::deref_mut<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self::parent_clause0::Target) +fn core::ops::deref::DerefMut::deref_mut<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (@TraitClause0::parent_clause0::Target) +where + [@TraitClause0]: core::ops::deref::DerefMut, trait core::ops::deref::DerefMut { parent_clause0 : [@TraitClause0]: core::ops::deref::Deref - fn deref_mut<'_0> = core::ops::deref::DerefMut::deref_mut<'_0_0, Self> + fn deref_mut<'_0> = core::ops::deref::DerefMut::deref_mut<'_0_0, Self>[Self] } impl alloc::boxed::{impl core::ops::deref::Deref for alloc::boxed::Box[@TraitClause0]}#38 : core::ops::deref::Deref[@TraitClause0]> @@ -664,7 +666,9 @@ where fn deref_mut<'_0> = alloc::boxed::{impl core::ops::deref::DerefMut for alloc::boxed::Box[@TraitClause0]}#39::deref_mut<'_0_0, T, A>[@TraitClause0] } -fn core::ops::deref::Deref::deref<'_0, Self>(@1: &'_0 (Self)) -> &'_0 (Self::Target) +fn core::ops::deref::Deref::deref<'_0, Self>(@1: &'_0 (Self)) -> &'_0 (@TraitClause0::Target) +where + [@TraitClause0]: core::ops::deref::Deref, diff --git a/charon/tests/ui/opacity.out b/charon/tests/ui/opacity.out index 803f8371..e44f249d 100644 --- a/charon/tests/ui/opacity.out +++ b/charon/tests/ui/opacity.out @@ -33,10 +33,12 @@ trait core::convert::From { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn from = core::convert::From::from + fn from = core::convert::From::from[Self] } fn core::convert::From::from(@1: T) -> Self +where + [@TraitClause0]: core::convert::From, fn core::convert::{impl core::convert::Into for T}#3::into(@1: T) -> U where @@ -114,12 +116,14 @@ struct test_crate::Struct = {} unsafe fn test_crate::extern_fn(@1: i32) fn core::convert::Into::into(@1: Self) -> T +where + [@TraitClause0]: core::convert::Into, trait core::convert::Into { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn into = core::convert::Into::into + fn into = core::convert::Into::into[Self] } impl core::convert::{impl core::convert::Into for T}#3 : core::convert::Into diff --git a/charon/tests/ui/opaque_attribute.out b/charon/tests/ui/opaque_attribute.out index 7094125e..83d83427 100644 --- a/charon/tests/ui/opaque_attribute.out +++ b/charon/tests/ui/opaque_attribute.out @@ -2,8 +2,8 @@ trait test_crate::BoolTrait { - fn get_bool<'_0> = test_crate::BoolTrait::get_bool<'_0_0, Self> - fn ret_true<'_0> = test_crate::BoolTrait::ret_true<'_0_0, Self> + fn get_bool<'_0> = test_crate::BoolTrait::get_bool<'_0_0, Self>[Self] + fn ret_true<'_0> = test_crate::BoolTrait::ret_true<'_0_0, Self>[Self] } fn test_crate::{impl test_crate::BoolTrait for bool}::get_bool<'_0>(@1: &'_0 (bool)) -> bool @@ -66,8 +66,12 @@ fn test_crate::call_fn_in_opaque_module() } fn test_crate::BoolTrait::get_bool<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: test_crate::BoolTrait, fn test_crate::BoolTrait::ret_true<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: test_crate::BoolTrait, diff --git a/charon/tests/ui/polonius_map.out b/charon/tests/ui/polonius_map.out index d7936a4d..d4ffed3c 100644 --- a/charon/tests/ui/polonius_map.out +++ b/charon/tests/ui/polonius_map.out @@ -20,40 +20,40 @@ enum core::option::Option trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Eq { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self> + fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self>[Self] } trait core::hash::Hasher { - fn finish<'_0> = core::hash::Hasher::finish<'_0_0, Self> - fn write<'_0, '_1> = core::hash::Hasher::write<'_0_0, '_0_1, Self> - fn write_u8<'_0> = core::hash::Hasher::write_u8<'_0_0, Self> - fn write_u16<'_0> = core::hash::Hasher::write_u16<'_0_0, Self> - fn write_u32<'_0> = core::hash::Hasher::write_u32<'_0_0, Self> - fn write_u64<'_0> = core::hash::Hasher::write_u64<'_0_0, Self> - fn write_u128<'_0> = core::hash::Hasher::write_u128<'_0_0, Self> - fn write_usize<'_0> = core::hash::Hasher::write_usize<'_0_0, Self> - fn write_i8<'_0> = core::hash::Hasher::write_i8<'_0_0, Self> - fn write_i16<'_0> = core::hash::Hasher::write_i16<'_0_0, Self> - fn write_i32<'_0> = core::hash::Hasher::write_i32<'_0_0, Self> - fn write_i64<'_0> = core::hash::Hasher::write_i64<'_0_0, Self> - fn write_i128<'_0> = core::hash::Hasher::write_i128<'_0_0, Self> - fn write_isize<'_0> = core::hash::Hasher::write_isize<'_0_0, Self> - fn write_length_prefix<'_0> = core::hash::Hasher::write_length_prefix<'_0_0, Self> - fn write_str<'_0, '_1> = core::hash::Hasher::write_str<'_0_0, '_0_1, Self> + fn finish<'_0> = core::hash::Hasher::finish<'_0_0, Self>[Self] + fn write<'_0, '_1> = core::hash::Hasher::write<'_0_0, '_0_1, Self>[Self] + fn write_u8<'_0> = core::hash::Hasher::write_u8<'_0_0, Self>[Self] + fn write_u16<'_0> = core::hash::Hasher::write_u16<'_0_0, Self>[Self] + fn write_u32<'_0> = core::hash::Hasher::write_u32<'_0_0, Self>[Self] + fn write_u64<'_0> = core::hash::Hasher::write_u64<'_0_0, Self>[Self] + fn write_u128<'_0> = core::hash::Hasher::write_u128<'_0_0, Self>[Self] + fn write_usize<'_0> = core::hash::Hasher::write_usize<'_0_0, Self>[Self] + fn write_i8<'_0> = core::hash::Hasher::write_i8<'_0_0, Self>[Self] + fn write_i16<'_0> = core::hash::Hasher::write_i16<'_0_0, Self>[Self] + fn write_i32<'_0> = core::hash::Hasher::write_i32<'_0_0, Self>[Self] + fn write_i64<'_0> = core::hash::Hasher::write_i64<'_0_0, Self>[Self] + fn write_i128<'_0> = core::hash::Hasher::write_i128<'_0_0, Self>[Self] + fn write_isize<'_0> = core::hash::Hasher::write_isize<'_0_0, Self>[Self] + fn write_length_prefix<'_0> = core::hash::Hasher::write_length_prefix<'_0_0, Self>[Self] + fn write_str<'_0, '_1> = core::hash::Hasher::write_str<'_0_0, '_0_1, Self>[Self] } trait core::hash::Hash { - fn hash<'_0, '_1, H, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::hash::Hasher> = core::hash::Hash::hash<'_0_0, '_0_1, Self, H>[@TraitClause0_0, @TraitClause0_1] - fn hash_slice<'_0, '_1, H, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::hash::Hasher, [@TraitClause2]: core::marker::Sized> = core::hash::Hash::hash_slice<'_0_0, '_0_1, Self, H>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn hash<'_0, '_1, H, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::hash::Hasher> = core::hash::Hash::hash<'_0_0, '_0_1, Self, H>[Self, @TraitClause0_0, @TraitClause0_1] + fn hash_slice<'_0, '_1, H, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::hash::Hasher, [@TraitClause2]: core::marker::Sized> = core::hash::Hash::hash_slice<'_0_0, '_0_1, Self, H>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] } trait core::hash::BuildHasher @@ -61,13 +61,13 @@ trait core::hash::BuildHasher parent_clause0 : [@TraitClause0]: core::hash::Hasher parent_clause1 : [@TraitClause1]: core::marker::Sized type Hasher - fn build_hasher<'_0> = core::hash::BuildHasher::build_hasher<'_0_0, Self> - fn hash_one<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::hash::Hash, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::hash::Hasher> = core::hash::BuildHasher::hash_one<'_0_0, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn build_hasher<'_0> = core::hash::BuildHasher::build_hasher<'_0_0, Self>[Self] + fn hash_one<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::hash::Hash, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::hash::Hasher> = core::hash::BuildHasher::hash_one<'_0_0, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] } trait core::borrow::Borrow { - fn borrow<'_0> = core::borrow::Borrow::borrow<'_0_0, Self, Borrowed> + fn borrow<'_0> = core::borrow::Borrow::borrow<'_0_0, Self, Borrowed>[Self] } fn std::collections::hash::map::{std::collections::hash::map::HashMap[@TraitClause0, @TraitClause1, @TraitClause2]}#2::get<'_0, '_1, K, V, S, Q>(@1: &'_0 (std::collections::hash::map::HashMap[@TraitClause0, @TraitClause1, @TraitClause2]), @2: &'_1 (Q)) -> core::option::Option<&'_0 (V)>[core::marker::Sized<&'_0 (V)>] @@ -157,7 +157,7 @@ where trait core::ops::index::Index { type Output - fn index<'_0> = core::ops::index::Index::index<'_0_0, Self, Idx> + fn index<'_0> = core::ops::index::Index::index<'_0_0, Self, Idx>[Self] } fn std::collections::hash::map::{impl core::ops::index::Index<&'_0 (Q)> for std::collections::hash::map::HashMap[@TraitClause0, @TraitClause1, @TraitClause2]}#9::index<'_0, '_1, K, Q, V, S>(@1: &'_1 (std::collections::hash::map::HashMap[@TraitClause0, @TraitClause1, @TraitClause2]), @2: &'_0 (Q)) -> &'_1 (std::collections::hash::map::{impl core::ops::index::Index<&'_0 (Q)> for std::collections::hash::map::HashMap[@TraitClause0, @TraitClause1, @TraitClause2]}#9<'_, K, Q, V, S>[@TraitClause0, @TraitClause1, @TraitClause2, @TraitClause3, @TraitClause4, @TraitClause5, @TraitClause6, @TraitClause7, @TraitClause8]::Output) @@ -231,7 +231,9 @@ fn test_crate::get_or_insert<'_0>(@1: &'_0 mut (std::collections::hash::map::Has return } -fn core::ops::index::Index::index<'_0, Self, Idx>(@1: &'_0 (Self), @2: Idx) -> &'_0 (Self::Output) +fn core::ops::index::Index::index<'_0, Self, Idx>(@1: &'_0 (Self), @2: Idx) -> &'_0 (@TraitClause0::Output) +where + [@TraitClause0]: core::ops::index::Index, impl<'_0, K, Q, V, S> std::collections::hash::map::{impl core::ops::index::Index<&'_0 (Q)> for std::collections::hash::map::HashMap[@TraitClause0, @TraitClause1, @TraitClause2]}#9<'_0, K, Q, V, S> : core::ops::index::Index[@TraitClause0, @TraitClause1, @TraitClause2], &'_0 (Q)> where @@ -251,63 +253,108 @@ where fn core::hash::BuildHasher::hash_one<'_0, Self, T>(@1: &'_0 (Self), @2: T) -> u64 where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::hash::Hash, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::hash::Hasher, + [@TraitClause0]: core::hash::BuildHasher, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::hash::Hash, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::hash::Hasher<@TraitClause0::Hasher>, fn core::hash::Hasher::write_u8<'_0, Self>(@1: &'_0 mut (Self), @2: u8) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_u16<'_0, Self>(@1: &'_0 mut (Self), @2: u16) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_u32<'_0, Self>(@1: &'_0 mut (Self), @2: u32) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_u64<'_0, Self>(@1: &'_0 mut (Self), @2: u64) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_u128<'_0, Self>(@1: &'_0 mut (Self), @2: u128) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_usize<'_0, Self>(@1: &'_0 mut (Self), @2: usize) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_i8<'_0, Self>(@1: &'_0 mut (Self), @2: i8) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_i16<'_0, Self>(@1: &'_0 mut (Self), @2: i16) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_i32<'_0, Self>(@1: &'_0 mut (Self), @2: i32) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_i64<'_0, Self>(@1: &'_0 mut (Self), @2: i64) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_i128<'_0, Self>(@1: &'_0 mut (Self), @2: i128) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_isize<'_0, Self>(@1: &'_0 mut (Self), @2: isize) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_length_prefix<'_0, Self>(@1: &'_0 mut (Self), @2: usize) +where + [@TraitClause0]: core::hash::Hasher, fn core::borrow::Borrow::borrow<'_0, Self, Borrowed>(@1: &'_0 (Self)) -> &'_0 (Borrowed) +where + [@TraitClause0]: core::borrow::Borrow, fn core::cmp::Eq::assert_receiver_is_total_eq<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: core::cmp::Eq, fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::hash::Hash::hash<'_0, '_1, Self, H>(@1: &'_0 (Self), @2: &'_1 mut (H)) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::hash::Hasher, + [@TraitClause0]: core::hash::Hash, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::hash::Hasher, fn core::hash::Hash::hash_slice<'_0, '_1, Self, H>(@1: &'_0 (Slice), @2: &'_1 mut (H)) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::hash::Hasher, - [@TraitClause2]: core::marker::Sized, + [@TraitClause0]: core::hash::Hash, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::hash::Hasher, + [@TraitClause3]: core::marker::Sized, fn core::hash::Hasher::finish<'_0, Self>(@1: &'_0 (Self)) -> u64 +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Slice)) +where + [@TraitClause0]: core::hash::Hasher, fn core::hash::Hasher::write_str<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Str)) +where + [@TraitClause0]: core::hash::Hasher, -fn core::hash::BuildHasher::build_hasher<'_0, Self>(@1: &'_0 (Self)) -> Self::Hasher +fn core::hash::BuildHasher::build_hasher<'_0, Self>(@1: &'_0 (Self)) -> @TraitClause0::Hasher +where + [@TraitClause0]: core::hash::BuildHasher, diff --git a/charon/tests/ui/predicates-on-late-bound-vars.out b/charon/tests/ui/predicates-on-late-bound-vars.out index 8ee6fef5..302a1aee 100644 --- a/charon/tests/ui/predicates-on-late-bound-vars.out +++ b/charon/tests/ui/predicates-on-late-bound-vars.out @@ -25,8 +25,8 @@ fn test_crate::wrap<'a>(@1: &'a (u32)) -> core::option::Option<&'a (u32)>[core:: trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } fn test_crate::wrap2<'a>(@1: &'a (u32)) -> core::option::Option<&'a (u32)>[core::marker::Sized<&'_ (u32)>] @@ -110,8 +110,12 @@ where } fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, diff --git a/charon/tests/ui/quantified-clause.out b/charon/tests/ui/quantified-clause.out index 9c9115ab..97831113 100644 --- a/charon/tests/ui/quantified-clause.out +++ b/charon/tests/ui/quantified-clause.out @@ -10,7 +10,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -18,7 +18,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } fn test_crate::foo(@1: F) @@ -87,8 +87,8 @@ opaque type core::array::iter::IntoIter trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -229,7 +229,7 @@ opaque type core::iter::adapters::inspect::Inspect trait core::ops::try_trait::FromResidual { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn from_residual = core::ops::try_trait::FromResidual::from_residual + fn from_residual = core::ops::try_trait::FromResidual::from_residual[Self] } enum core::ops::control_flow::ControlFlow @@ -248,8 +248,8 @@ trait core::ops::try_trait::Try parent_clause2 : [@TraitClause2]: core::marker::Sized type Output type Residual - fn from_output = core::ops::try_trait::Try::from_output - fn branch = core::ops::try_trait::Try::branch + fn from_output = core::ops::try_trait::Try::from_output[Self] + fn branch = core::ops::try_trait::Try::branch[Self] } trait core::ops::try_trait::Residual @@ -267,19 +267,19 @@ where trait core::default::Default { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn default = core::default::Default::default + fn default = core::default::Default::default[Self] } trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Eq { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self> + fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self>[Self] } enum core::cmp::Ordering = @@ -291,21 +291,21 @@ enum core::cmp::Ordering = trait core::cmp::PartialOrd { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs> - fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs> - fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs> - fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs> - fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs> + fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs>[Self] + fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs>[Self] + fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs>[Self] + fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs>[Self] + fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Ord { parent_clause0 : [@TraitClause0]: core::cmp::Eq parent_clause1 : [@TraitClause1]: core::cmp::PartialOrd - fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self> - fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[@TraitClause0_0] - fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[@TraitClause0_0] - fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[@TraitClause0_0] + fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self>[Self] + fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[Self, @TraitClause0_0] + fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[Self, @TraitClause0_0] + fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[Self, @TraitClause0_0] } opaque type core::iter::adapters::rev::Rev @@ -333,90 +333,90 @@ where parent_clause2 : [@TraitClause2]: core::marker::Sized type Item type IntoIter - fn into_iter = core::iter::traits::collect::IntoIterator::into_iter + fn into_iter = core::iter::traits::collect::IntoIterator::into_iter[Self] } trait core::iter::traits::iterator::Iterator { parent_clause0 : [@TraitClause0]: core::marker::Sized type Item - fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self> - fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[@TraitClause0_0] - fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self> - fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[@TraitClause0_0] - fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[@TraitClause0_0] - fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self> - fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self> - fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[@TraitClause0_0] - fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[@TraitClause0_0, @TraitClause0_1] - fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[@TraitClause0_0] - fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[@TraitClause0_0] - fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[@TraitClause0_0] - fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[@TraitClause0_0] - fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[@TraitClause0_0, @TraitClause0_1] - fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[@TraitClause0_0] - fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[@TraitClause0_0] - fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[@TraitClause0_0, @TraitClause0_1] - fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[@TraitClause0_0, @TraitClause0_1] - fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[@TraitClause0_0, @TraitClause0_1] - fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] - fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[@TraitClause0_0, @TraitClause0_1] - fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[@TraitClause0_0] - fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[@TraitClause0_0, @TraitClause0_1] - fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[@TraitClause0_0] + fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self>[Self] + fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[Self, @TraitClause0_0] + fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self>[Self] + fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[Self, @TraitClause0_0] + fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[Self, @TraitClause0_0] + fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self>[Self] + fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self>[Self] + fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[Self, @TraitClause0_0] + fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[Self, @TraitClause0_0, @TraitClause0_1] + fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[Self, @TraitClause0_0] + fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[Self, @TraitClause0_0] + fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[Self, @TraitClause0_0] + fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[Self, @TraitClause0_0] + fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[Self, @TraitClause0_0, @TraitClause0_1] + fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[Self, @TraitClause0_0] + fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[Self, @TraitClause0_0] + fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[Self, @TraitClause0_0, @TraitClause0_1] + fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[Self, @TraitClause0_0, @TraitClause0_1] + fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[Self, @TraitClause0_0, @TraitClause0_1] + fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] + fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[Self, @TraitClause0_0, @TraitClause0_1] + fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[Self, @TraitClause0_0] + fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[Self, @TraitClause0_0, @TraitClause0_1] + fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[Self, @TraitClause0_0] } opaque type core::iter::adapters::intersperse::Intersperse @@ -459,34 +459,34 @@ trait core::iter::traits::collect::FromIterator { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[@TraitClause0_0, @TraitClause0_1] + fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::collect::Extend { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[@TraitClause0_0, @TraitClause0_1] - fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A> - fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A> - fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[@TraitClause0_0] + fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[Self, @TraitClause0_0, @TraitClause0_1] + fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A>[Self] + fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A>[Self] + fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[Self, @TraitClause0_0] } trait core::iter::traits::double_ended::DoubleEndedIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self> - fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self> - fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self> - fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self>[Self] + fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self>[Self] + fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self>[Self] + fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] } trait core::iter::traits::exact_size::ExactSizeIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self> - fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self> + fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self>[Self] + fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self>[Self] } opaque type core::iter::adapters::array_chunks::ArrayChunks @@ -498,21 +498,21 @@ trait core::iter::traits::accum::Sum { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[@TraitClause0_0, @TraitClause0_1] + fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::accum::Product { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[@TraitClause0_0, @TraitClause0_1] + fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::adapters::zip::TrustedRandomAccessNoCoerce { parent_clause0 : [@TraitClause0]: core::marker::Sized const MAY_HAVE_SIDE_EFFECT : bool - fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[@TraitClause0_0] + fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[Self, @TraitClause0_0] } impl test_crate::{impl test_crate::Trait for core::result::Result[@TraitClause0, @TraitClause1]} : test_crate::Trait[@TraitClause0, @TraitClause1]> @@ -523,647 +523,790 @@ where [@TraitClause3]: for<'_0> core::marker::Copy<@TraitClause2::Item>, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, -fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> Self::IntoIter +fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> @TraitClause0::IntoIter +where + [@TraitClause0]: core::iter::traits::collect::IntoIterator, -fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter[Self::parent_clause0]>[core::marker::Sized>, core::marker::Sized[Self::parent_clause0]>] +fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter<@TraitClause0::Item, const N : usize>[@TraitClause0::parent_clause0]>[core::marker::Sized>, core::marker::Sized[@TraitClause0::parent_clause0]>] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::size_hint<'_0, Self>(@1: &'_0 (Self)) -> (usize, core::option::Option[core::marker::Sized]) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, fn core::iter::traits::iterator::Iterator::count(@1: Self) -> usize where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::advance_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0] - -fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause0] +fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, - @TraitClause2::Item = Self::Item, -fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, + @TraitClause3::Item = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: Self::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, -fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause1, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: @TraitClause0::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause2]: core::clone::Clone<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause2, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, - -fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = (), + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause0] +fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause0] +fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, - -fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause3, @TraitClause0, @TraitClause2] +fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause2, @TraitClause0, @TraitClause1, @TraitClause3] +fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = U, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause2, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause4, @TraitClause1, @TraitClause3] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, - for<'_0> @TraitClause3::parent_clause0::Output = R, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = core::option::Option[@TraitClause2], -fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause0] +fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause3, @TraitClause1, @TraitClause2, @TraitClause4] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = U, -fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = (), + [@TraitClause2]: core::iter::traits::collect::IntoIterator<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) +fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause3, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: for<'_0> core::ops::function::FnMut))>, + for<'_0> @TraitClause4::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause1] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::FromIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause3::TryType +fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::try_trait::Try, - [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause2::Residual, B>, - [@TraitClause4]: core::iter::traits::collect::FromIterator, -fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::FromIterator, + [@TraitClause3]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause4::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::Extend, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::try_trait::Try<@TraitClause0::Item>, + [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, B>, + [@TraitClause5]: core::iter::traits::collect::FromIterator, + +fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::Extend, + [@TraitClause3]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partition(@1: Self, @2: F) -> (B, B) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::default::Default, - [@TraitClause4]: core::iter::traits::collect::Extend, - [@TraitClause5]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause5::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::default::Default, + [@TraitClause5]: core::iter::traits::collect::Extend, + [@TraitClause6]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause6::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>(@1: Self, @2: P) -> usize where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized

, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, T : 'a, - Self::Item = &'a mut (T), - for<'_0> @TraitClause4::parent_clause0::Output = bool, + @TraitClause0::Item = &'a mut (T), + for<'_0> @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_partitioned(@1: Self, @2: P) -> bool where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::try_fold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, + +fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + @TraitClause5::Output = (), -fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::ops::try_trait::Try, - @TraitClause3::parent_clause0::Output = R, - @TraitClause4::Output = (), + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B +fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: core::ops::function::FnMut R, (@TraitClause0::Item, @TraitClause0::Item)>, + @TraitClause4::Output = @TraitClause0::Item, + @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, - @TraitClause3::Output = Self::Item, - @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause0] +fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (@TraitClause0::Item))>, + @TraitClause4::Output = bool, + for<'_0> @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, - @TraitClause3::Output = bool, - for<'_0> @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::exact_size::ExactSizeIterator, + [@TraitClause5]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::ops::function::FnMut, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, - [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, - @TraitClause1::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, - -fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause2]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::iterator::Iterator::unzip(@1: Self) -> (FromA, FromB) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::default::Default, - [@TraitClause5]: core::iter::traits::collect::Extend, - [@TraitClause6]: core::default::Default, - [@TraitClause7]: core::iter::traits::collect::Extend, - [@TraitClause8]: core::marker::Sized, - [@TraitClause9]: core::iter::traits::iterator::Iterator, - Self::Item = (A, B), - -fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause1] + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::default::Default, + [@TraitClause6]: core::iter::traits::collect::Extend, + [@TraitClause7]: core::default::Default, + [@TraitClause8]: core::iter::traits::collect::Extend, + [@TraitClause9]: core::marker::Sized, + [@TraitClause10]: core::iter::traits::iterator::Iterator, + @TraitClause0::Item = (A, B), + +fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::marker::Copy, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::marker::Copy, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause1] +fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::clone::Clone, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause0] +fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::clone::Clone, -fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::sum(@1: Self) -> S where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Sum, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Sum, fn core::iter::traits::iterator::Iterator::product(@1: Self) -> P where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Product, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Product, fn core::iter::traits::iterator::Iterator::cmp(@1: Self, @2: I) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - @TraitClause1::Item = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::Ord<@TraitClause0::Item>, + [@TraitClause4]: core::marker::Sized, + @TraitClause2::Item = @TraitClause0::Item, fn core::iter::traits::iterator::Iterator::cmp_by(@1: Self, @2: I, @3: F) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::cmp::Ordering, fn core::iter::traits::iterator::Iterator::partial_cmp(@1: Self, @2: I) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partial_cmp_by(@1: Self, @2: I, @3: F) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::option::Option[core::marker::Sized], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::option::Option[core::marker::Sized], fn core::iter::traits::iterator::Iterator::eq(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::eq_by(@1: Self, @2: I, @3: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::ne(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::lt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::le(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::gt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::ge(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::is_sorted(@1: Self) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::PartialOrd, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause0::Item>, fn core::iter::traits::iterator::Iterator::is_sorted_by(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_sorted_by_key(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::cmp::PartialOrd, - @TraitClause3::parent_clause0::Output = K, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause5]: core::cmp::PartialOrd, + @TraitClause4::parent_clause0::Output = K, -unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> Self::Item +unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> @TraitClause0::Item where - [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::Ord::cmp<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 (Self)) -> core::cmp::Ordering +where + [@TraitClause0]: core::cmp::Ord, fn core::cmp::Ord::max(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::min(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::clamp(@1: Self, @2: Self, @3: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Eq::assert_receiver_is_total_eq<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: core::cmp::Eq, fn core::cmp::PartialOrd::partial_cmp<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> core::option::Option[core::marker::Sized] +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::lt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::le<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::gt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::ge<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::default::Default::default() -> Self +where + [@TraitClause0]: core::default::Default, -fn core::ops::try_trait::Try::from_output(@1: Self::Output) -> Self +fn core::ops::try_trait::Try::from_output(@1: @TraitClause0::Output) -> Self +where + [@TraitClause0]: core::ops::try_trait::Try, -fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow[Self::parent_clause0::parent_clause0, Self::parent_clause1] +fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow<@TraitClause0::Residual, @TraitClause0::Output>[@TraitClause0::parent_clause0::parent_clause0, @TraitClause0::parent_clause1] +where + [@TraitClause0]: core::ops::try_trait::Try, fn core::ops::try_trait::FromResidual::from_residual(@1: R) -> Self +where + [@TraitClause0]: core::ops::try_trait::FromResidual, fn core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0, Self>(@1: &'_0 (Self)) -> usize where - [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause1]: core::iter::traits::iterator::Iterator, fn core::iter::traits::accum::Sum::sum(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Sum, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::accum::Product::product(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Product, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::FromIterator::from_iter(@1: T) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::FromIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend<'_0, Self, A, T>(@1: &'_0 mut (Self), @2: T) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend_one<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) +where + [@TraitClause0]: core::iter::traits::collect::Extend, fn core::iter::traits::collect::Extend::extend_reserve<'_0, Self, A>(@1: &'_0 mut (Self), @2: usize) +where + [@TraitClause0]: core::iter::traits::collect::Extend, unsafe fn core::iter::traits::collect::Extend::extend_one_unchecked<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, -fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, - [@TraitClause5]: core::ops::try_trait::Try, - @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, fn core::iter::traits::double_ended::DoubleEndedIterator::rfold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::exact_size::ExactSizeIterator::len<'_0, Self>(@1: &'_0 (Self)) -> usize +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, fn core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, diff --git a/charon/tests/ui/region-inference-vars.out b/charon/tests/ui/region-inference-vars.out index e356ad3d..973ee4e9 100644 --- a/charon/tests/ui/region-inference-vars.out +++ b/charon/tests/ui/region-inference-vars.out @@ -16,7 +16,7 @@ trait test_crate::MyTryFrom parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized type Error - fn from<[@TraitClause0]: core::marker::Sized> = test_crate::MyTryFrom::from[@TraitClause0_0] + fn from<[@TraitClause0]: core::marker::Sized> = test_crate::MyTryFrom::from[Self, @TraitClause0_0] } fn test_crate::{impl test_crate::MyTryFrom<&'_0 (bool)> for bool}::from<'_0>(@1: &'_0 (bool)) -> core::result::Result for bool}<'_>::Error>[core::marker::Sized, core::marker::Sized<()>] @@ -39,9 +39,10 @@ impl<'_0> test_crate::{impl test_crate::MyTryFrom<&'_0 (bool)> for bool}<'_0> : fn from = test_crate::{impl test_crate::MyTryFrom<&'_0 (bool)> for bool}::from<'_0> } -fn test_crate::MyTryFrom::from(@1: T) -> core::result::Result[@TraitClause0, Self::parent_clause1] +fn test_crate::MyTryFrom::from(@1: T) -> core::result::Result[@TraitClause1, @TraitClause0::parent_clause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: test_crate::MyTryFrom, + [@TraitClause1]: core::marker::Sized, diff --git a/charon/tests/ui/rename_attribute.out b/charon/tests/ui/rename_attribute.out index 45be93c2..789abe0b 100644 --- a/charon/tests/ui/rename_attribute.out +++ b/charon/tests/ui/rename_attribute.out @@ -2,8 +2,8 @@ trait test_crate::BoolTrait { - fn get_bool<'_0> = test_crate::BoolTrait::get_bool<'_0_0, Self> - fn ret_true<'_0> = test_crate::BoolTrait::ret_true<'_0_0, Self> + fn get_bool<'_0> = test_crate::BoolTrait::get_bool<'_0_0, Self>[Self] + fn ret_true<'_0> = test_crate::BoolTrait::ret_true<'_0_0, Self>[Self] } fn test_crate::{impl test_crate::BoolTrait for bool}::get_bool<'_0>(@1: &'_0 (bool)) -> bool @@ -23,6 +23,8 @@ impl test_crate::{impl test_crate::BoolTrait for bool} : test_crate::BoolTrait fn test_crate::BoolTrait::ret_true<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: test_crate::BoolTrait, { let @0: bool; // return let self@1: &'_ (Self); // arg #1 @@ -86,6 +88,8 @@ global test_crate::C: u32 = test_crate::C() type test_crate::Test2 = u32 fn test_crate::BoolTrait::get_bool<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: test_crate::BoolTrait, diff --git a/charon/tests/ui/result-unwrap.out b/charon/tests/ui/result-unwrap.out index 12c61e5d..ea597519 100644 --- a/charon/tests/ui/result-unwrap.out +++ b/charon/tests/ui/result-unwrap.out @@ -43,7 +43,7 @@ struct core::fmt::Error = {} trait core::fmt::Debug { - fn fmt<'_0, '_1, '_2> = core::fmt::Debug::fmt<'_0_0, '_0_1, '_0_2, Self> + fn fmt<'_0, '_1, '_2> = core::fmt::Debug::fmt<'_0_0, '_0_1, '_0_2, Self>[Self] } fn core::result::unwrap_failed<'_0, '_1>(@1: &'_0 (Str), @2: &'_1 (dyn (exists(TODO)))) -> ! @@ -138,12 +138,16 @@ fn test_crate::unwrap(@1: core::result::Result[core::marker::Sized(@1: &'_0 (Self), @2: &'_1 mut (core::fmt::Formatter<'_2>)) -> core::result::Result<(), core::fmt::Error>[core::marker::Sized<()>, core::marker::Sized] +where + [@TraitClause0]: core::fmt::Debug, fn core::fmt::LowerHex::fmt<'_0, '_1, '_2, Self>(@1: &'_0 (Self), @2: &'_1 mut (core::fmt::Formatter<'_2>)) -> core::result::Result<(), core::fmt::Error>[core::marker::Sized<()>, core::marker::Sized] +where + [@TraitClause0]: core::fmt::LowerHex, trait core::fmt::LowerHex { - fn fmt<'_0, '_1, '_2> = core::fmt::LowerHex::fmt<'_0_0, '_0_1, '_0_2, Self> + fn fmt<'_0, '_1, '_2> = core::fmt::LowerHex::fmt<'_0_0, '_0_1, '_0_2, Self>[Self] } impl core::fmt::num::{impl core::fmt::LowerHex for u32}#60 : core::fmt::LowerHex @@ -152,10 +156,12 @@ impl core::fmt::num::{impl core::fmt::LowerHex for u32}#60 : core::fmt::LowerHex } fn core::fmt::Display::fmt<'_0, '_1, '_2, Self>(@1: &'_0 (Self), @2: &'_1 mut (core::fmt::Formatter<'_2>)) -> core::result::Result<(), core::fmt::Error>[core::marker::Sized<()>, core::marker::Sized] +where + [@TraitClause0]: core::fmt::Display, trait core::fmt::Display { - fn fmt<'_0, '_1, '_2> = core::fmt::Display::fmt<'_0_0, '_0_1, '_0_2, Self> + fn fmt<'_0, '_1, '_2> = core::fmt::Display::fmt<'_0_0, '_0_1, '_0_2, Self>[Self] } impl core::fmt::num::imp::{impl core::fmt::Display for u32}#10 : core::fmt::Display @@ -164,10 +170,12 @@ impl core::fmt::num::imp::{impl core::fmt::Display for u32}#10 : core::fmt::Disp } fn core::fmt::UpperHex::fmt<'_0, '_1, '_2, Self>(@1: &'_0 (Self), @2: &'_1 mut (core::fmt::Formatter<'_2>)) -> core::result::Result<(), core::fmt::Error>[core::marker::Sized<()>, core::marker::Sized] +where + [@TraitClause0]: core::fmt::UpperHex, trait core::fmt::UpperHex { - fn fmt<'_0, '_1, '_2> = core::fmt::UpperHex::fmt<'_0_0, '_0_1, '_0_2, Self> + fn fmt<'_0, '_1, '_2> = core::fmt::UpperHex::fmt<'_0_0, '_0_1, '_0_2, Self>[Self] } impl core::fmt::num::{impl core::fmt::UpperHex for u32}#61 : core::fmt::UpperHex diff --git a/charon/tests/ui/rust-name-matcher-tests.out b/charon/tests/ui/rust-name-matcher-tests.out index 9a4dc430..afed9e78 100644 --- a/charon/tests/ui/rust-name-matcher-tests.out +++ b/charon/tests/ui/rust-name-matcher-tests.out @@ -16,7 +16,7 @@ trait core::marker::Sized trait test_crate::Trait { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn method> = test_crate::Trait::method[@TraitClause0_0] + fn method> = test_crate::Trait::method[Self, @TraitClause0_0] } struct alloc::alloc::Global = {} @@ -97,7 +97,8 @@ where fn test_crate::Trait::method() where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: test_crate::Trait, + [@TraitClause1]: core::marker::Sized, diff --git a/charon/tests/ui/scopes.out b/charon/tests/ui/scopes.out index 342fb6a8..cc634993 100644 --- a/charon/tests/ui/scopes.out +++ b/charon/tests/ui/scopes.out @@ -2,7 +2,7 @@ trait test_crate::Trait<'a, Self> { - fn method<'b> = test_crate::Trait::method<'a, 'b, Self> + fn method<'b> = test_crate::Trait::method<'a, 'b, Self>[Self] } fn test_crate::{impl test_crate::Trait<'a> for &'a (())}::method<'a, 'b>(@1: &'b (&'a (()))) -> &'b (()) @@ -23,6 +23,8 @@ fn test_crate::bar<'_0>(@1: &'_0 (fn<'_0>(&'_0_0 (fn<'_0>(&'_0_0 (u32)) -> u32)) fn test_crate::baz<'a>(@1: &'a (fn<'b>(&'a (u32), &'b (fn<'c>(&'a (u32), &'b (u32), &'c (u32)) -> u32)))) fn test_crate::Trait::method<'a, 'b, Self>(@1: &'b (Self)) -> &'b (()) +where + [@TraitClause0]: test_crate::Trait<'a, Self>, diff --git a/charon/tests/ui/string-literal.out b/charon/tests/ui/string-literal.out index 89e3b63a..382e7f9c 100644 --- a/charon/tests/ui/string-literal.out +++ b/charon/tests/ui/string-literal.out @@ -57,10 +57,12 @@ fn test_crate::main() } fn alloc::string::ToString::to_string<'_0, Self>(@1: &'_0 (Self)) -> alloc::string::String +where + [@TraitClause0]: alloc::string::ToString, trait alloc::string::ToString { - fn to_string<'_0> = alloc::string::ToString::to_string<'_0_0, Self> + fn to_string<'_0> = alloc::string::ToString::to_string<'_0_0, Self>[Self] } impl alloc::string::{impl alloc::string::ToString for Str}#102 : alloc::string::ToString diff --git a/charon/tests/ui/trait-instance-id.out b/charon/tests/ui/trait-instance-id.out index 4d4838f5..a3ab6d4c 100644 --- a/charon/tests/ui/trait-instance-id.out +++ b/charon/tests/ui/trait-instance-id.out @@ -54,8 +54,8 @@ enum core::result::Result trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -144,7 +144,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -152,7 +152,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } opaque type core::iter::adapters::map::Map @@ -215,7 +215,7 @@ opaque type core::iter::adapters::inspect::Inspect trait core::ops::try_trait::FromResidual { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn from_residual = core::ops::try_trait::FromResidual::from_residual + fn from_residual = core::ops::try_trait::FromResidual::from_residual[Self] } enum core::ops::control_flow::ControlFlow @@ -234,8 +234,8 @@ trait core::ops::try_trait::Try parent_clause2 : [@TraitClause2]: core::marker::Sized type Output type Residual - fn from_output = core::ops::try_trait::Try::from_output - fn branch = core::ops::try_trait::Try::branch + fn from_output = core::ops::try_trait::Try::from_output[Self] + fn branch = core::ops::try_trait::Try::branch[Self] } trait core::ops::try_trait::Residual @@ -253,19 +253,19 @@ where trait core::default::Default { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn default = core::default::Default::default + fn default = core::default::Default::default[Self] } trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Eq { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self> + fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self>[Self] } enum core::cmp::Ordering = @@ -277,21 +277,21 @@ enum core::cmp::Ordering = trait core::cmp::PartialOrd { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs> - fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs> - fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs> - fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs> - fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs> + fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs>[Self] + fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs>[Self] + fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs>[Self] + fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs>[Self] + fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Ord { parent_clause0 : [@TraitClause0]: core::cmp::Eq parent_clause1 : [@TraitClause1]: core::cmp::PartialOrd - fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self> - fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[@TraitClause0_0] - fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[@TraitClause0_0] - fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[@TraitClause0_0] + fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self>[Self] + fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[Self, @TraitClause0_0] + fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[Self, @TraitClause0_0] + fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[Self, @TraitClause0_0] } opaque type core::iter::adapters::rev::Rev @@ -314,83 +314,83 @@ trait core::iter::traits::iterator::Iterator { parent_clause0 : [@TraitClause0]: core::marker::Sized type Item - fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self> - fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[@TraitClause0_0] - fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self> - fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[@TraitClause0_0] - fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[@TraitClause0_0] - fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self> - fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self> - fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[@TraitClause0_0] - fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[@TraitClause0_0, @TraitClause0_1] - fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[@TraitClause0_0] - fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[@TraitClause0_0] - fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[@TraitClause0_0] - fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[@TraitClause0_0] - fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[@TraitClause0_0, @TraitClause0_1] - fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[@TraitClause0_0] - fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[@TraitClause0_0] - fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[@TraitClause0_0, @TraitClause0_1] - fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[@TraitClause0_0, @TraitClause0_1] - fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[@TraitClause0_0, @TraitClause0_1] - fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] - fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[@TraitClause0_0, @TraitClause0_1] - fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[@TraitClause0_0] - fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[@TraitClause0_0, @TraitClause0_1] - fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[@TraitClause0_0] + fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self>[Self] + fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[Self, @TraitClause0_0] + fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self>[Self] + fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[Self, @TraitClause0_0] + fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[Self, @TraitClause0_0] + fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self>[Self] + fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self>[Self] + fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[Self, @TraitClause0_0] + fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[Self, @TraitClause0_0, @TraitClause0_1] + fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[Self, @TraitClause0_0] + fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[Self, @TraitClause0_0] + fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[Self, @TraitClause0_0] + fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[Self, @TraitClause0_0] + fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[Self, @TraitClause0_0, @TraitClause0_1] + fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[Self, @TraitClause0_0] + fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[Self, @TraitClause0_0] + fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[Self, @TraitClause0_0, @TraitClause0_1] + fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[Self, @TraitClause0_0, @TraitClause0_1] + fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[Self, @TraitClause0_0, @TraitClause0_1] + fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] + fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[Self, @TraitClause0_0, @TraitClause0_1] + fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[Self, @TraitClause0_0] + fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[Self, @TraitClause0_0, @TraitClause0_1] + fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[Self, @TraitClause0_0] } trait core::iter::traits::collect::IntoIterator @@ -402,7 +402,7 @@ where parent_clause2 : [@TraitClause2]: core::marker::Sized type Item type IntoIter - fn into_iter = core::iter::traits::collect::IntoIterator::into_iter + fn into_iter = core::iter::traits::collect::IntoIterator::into_iter[Self] } opaque type core::iter::adapters::intersperse::Intersperse @@ -445,34 +445,34 @@ trait core::iter::traits::collect::FromIterator { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[@TraitClause0_0, @TraitClause0_1] + fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::collect::Extend { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[@TraitClause0_0, @TraitClause0_1] - fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A> - fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A> - fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[@TraitClause0_0] + fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[Self, @TraitClause0_0, @TraitClause0_1] + fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A>[Self] + fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A>[Self] + fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[Self, @TraitClause0_0] } trait core::iter::traits::double_ended::DoubleEndedIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self> - fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self> - fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self> - fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self>[Self] + fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self>[Self] + fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self>[Self] + fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] } trait core::iter::traits::exact_size::ExactSizeIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self> - fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self> + fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self>[Self] + fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self>[Self] } opaque type core::iter::adapters::array_chunks::ArrayChunks @@ -484,21 +484,21 @@ trait core::iter::traits::accum::Sum { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[@TraitClause0_0, @TraitClause0_1] + fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::accum::Product { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[@TraitClause0_0, @TraitClause0_1] + fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::adapters::zip::TrustedRandomAccessNoCoerce { parent_clause0 : [@TraitClause0]: core::marker::Sized const MAY_HAVE_SIDE_EFFECT : bool - fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[@TraitClause0_0] + fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[Self, @TraitClause0_0] } fn core::array::iter::{impl core::iter::traits::collect::IntoIterator for Array}::into_iter(@1: Array) -> core::array::iter::{impl core::iter::traits::collect::IntoIterator for Array}[@TraitClause0]::IntoIter @@ -1078,7 +1078,9 @@ fn test_crate::main() return } -fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> Self::IntoIter +fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> @TraitClause0::IntoIter +where + [@TraitClause0]: core::iter::traits::collect::IntoIterator, impl core::array::iter::{impl core::iter::traits::collect::IntoIterator for Array} : core::iter::traits::collect::IntoIterator> where @@ -1105,14 +1107,18 @@ where fn into_iter = core::iter::traits::collect::{impl core::iter::traits::collect::IntoIterator for I}#1::into_iter[@TraitClause0, @TraitClause1] } -fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, fn core::ops::arith::AddAssign::add_assign<'_0, Self, Rhs>(@1: &'_0 mut (Self), @2: Rhs) +where + [@TraitClause0]: core::ops::arith::AddAssign, trait core::ops::arith::AddAssign { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn add_assign<'_0> = core::ops::arith::AddAssign::add_assign<'_0_0, Self, Rhs> + fn add_assign<'_0> = core::ops::arith::AddAssign::add_assign<'_0_0, Self, Rhs>[Self] } impl<'_0> core::ops::arith::{impl core::ops::arith::AddAssign<&'_0 (i32)> for i32}#365<'_0> : core::ops::arith::AddAssign @@ -1121,644 +1127,783 @@ impl<'_0> core::ops::arith::{impl core::ops::arith::AddAssign<&'_0 (i32)> for i3 fn add_assign<'_0> = core::ops::arith::{impl core::ops::arith::AddAssign<&'_0 (i32)> for i32}#365::add_assign<'_0, '_0_0> } -fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter[Self::parent_clause0]>[core::marker::Sized>, core::marker::Sized[Self::parent_clause0]>] +fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter<@TraitClause0::Item, const N : usize>[@TraitClause0::parent_clause0]>[core::marker::Sized>, core::marker::Sized[@TraitClause0::parent_clause0]>] where - [@TraitClause0]: core::marker::Sized, - -fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0] + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause0] +fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, - @TraitClause2::Item = Self::Item, -fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, + @TraitClause3::Item = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: Self::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, -fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause1, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: @TraitClause0::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause2]: core::clone::Clone<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause2, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) +fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = (), - -fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause1, @TraitClause0] -where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause0] +fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], - -fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause0] +fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause3, @TraitClause0, @TraitClause2] +fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause2, @TraitClause0, @TraitClause1, @TraitClause3] +fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = U, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause2, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause4, @TraitClause1, @TraitClause3] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, - for<'_0> @TraitClause3::parent_clause0::Output = R, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = core::option::Option[@TraitClause2], -fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause0] +fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause3, @TraitClause1, @TraitClause2, @TraitClause4] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = U, -fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = (), + [@TraitClause2]: core::iter::traits::collect::IntoIterator<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) +fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause3, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: for<'_0> core::ops::function::FnMut))>, + for<'_0> @TraitClause4::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::FromIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause2, @TraitClause1] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause3::TryType +fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::try_trait::Try, - [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause2::Residual, B>, - [@TraitClause4]: core::iter::traits::collect::FromIterator, -fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::FromIterator, + [@TraitClause3]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause4::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::Extend, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::try_trait::Try<@TraitClause0::Item>, + [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, B>, + [@TraitClause5]: core::iter::traits::collect::FromIterator, + +fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::Extend, + [@TraitClause3]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partition(@1: Self, @2: F) -> (B, B) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::default::Default, - [@TraitClause4]: core::iter::traits::collect::Extend, - [@TraitClause5]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause5::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::default::Default, + [@TraitClause5]: core::iter::traits::collect::Extend, + [@TraitClause6]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause6::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>(@1: Self, @2: P) -> usize where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized

, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, T : 'a, - Self::Item = &'a mut (T), - for<'_0> @TraitClause4::parent_clause0::Output = bool, + @TraitClause0::Item = &'a mut (T), + for<'_0> @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_partitioned(@1: Self, @2: P) -> bool where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::try_fold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, + +fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + @TraitClause5::Output = (), -fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::ops::try_trait::Try, - @TraitClause3::parent_clause0::Output = R, - @TraitClause4::Output = (), + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: core::ops::function::FnMut R, (@TraitClause0::Item, @TraitClause0::Item)>, + @TraitClause4::Output = @TraitClause0::Item, + @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, - @TraitClause3::Output = Self::Item, - @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause0] +fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (@TraitClause0::Item))>, + @TraitClause4::Output = bool, + for<'_0> @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, - @TraitClause3::Output = bool, - for<'_0> @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::exact_size::ExactSizeIterator, + [@TraitClause5]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::ops::function::FnMut, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, - [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, - @TraitClause1::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, - -fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause2]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::iterator::Iterator::unzip(@1: Self) -> (FromA, FromB) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::default::Default, - [@TraitClause5]: core::iter::traits::collect::Extend, - [@TraitClause6]: core::default::Default, - [@TraitClause7]: core::iter::traits::collect::Extend, - [@TraitClause8]: core::marker::Sized, - [@TraitClause9]: core::iter::traits::iterator::Iterator, - Self::Item = (A, B), - -fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause1] + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::default::Default, + [@TraitClause6]: core::iter::traits::collect::Extend, + [@TraitClause7]: core::default::Default, + [@TraitClause8]: core::iter::traits::collect::Extend, + [@TraitClause9]: core::marker::Sized, + [@TraitClause10]: core::iter::traits::iterator::Iterator, + @TraitClause0::Item = (A, B), + +fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::marker::Copy, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::marker::Copy, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause1] +fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::clone::Clone, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause0] +fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::clone::Clone, -fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::sum(@1: Self) -> S where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Sum, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Sum, fn core::iter::traits::iterator::Iterator::product(@1: Self) -> P where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Product, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Product, fn core::iter::traits::iterator::Iterator::cmp(@1: Self, @2: I) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - @TraitClause1::Item = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::Ord<@TraitClause0::Item>, + [@TraitClause4]: core::marker::Sized, + @TraitClause2::Item = @TraitClause0::Item, fn core::iter::traits::iterator::Iterator::cmp_by(@1: Self, @2: I, @3: F) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::cmp::Ordering, fn core::iter::traits::iterator::Iterator::partial_cmp(@1: Self, @2: I) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partial_cmp_by(@1: Self, @2: I, @3: F) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::option::Option[core::marker::Sized], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::option::Option[core::marker::Sized], fn core::iter::traits::iterator::Iterator::eq(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::eq_by(@1: Self, @2: I, @3: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::ne(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::lt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::le(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::gt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::ge(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::is_sorted(@1: Self) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::PartialOrd, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause0::Item>, fn core::iter::traits::iterator::Iterator::is_sorted_by(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_sorted_by_key(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::cmp::PartialOrd, - @TraitClause3::parent_clause0::Output = K, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause5]: core::cmp::PartialOrd, + @TraitClause4::parent_clause0::Output = K, -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::iter::traits::iterator::Iterator::size_hint<'_0, Self>(@1: &'_0 (Self)) -> (usize, core::option::Option[core::marker::Sized]) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, fn core::iter::traits::iterator::Iterator::count(@1: Self) -> usize where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::advance_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> Self::Item +unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> @TraitClause0::Item where - [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::Ord::cmp<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 (Self)) -> core::cmp::Ordering +where + [@TraitClause0]: core::cmp::Ord, fn core::cmp::Ord::max(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::min(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::clamp(@1: Self, @2: Self, @3: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Eq::assert_receiver_is_total_eq<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: core::cmp::Eq, fn core::cmp::PartialOrd::partial_cmp<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> core::option::Option[core::marker::Sized] +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::lt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::le<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::gt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::ge<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::default::Default::default() -> Self +where + [@TraitClause0]: core::default::Default, -fn core::ops::try_trait::Try::from_output(@1: Self::Output) -> Self +fn core::ops::try_trait::Try::from_output(@1: @TraitClause0::Output) -> Self +where + [@TraitClause0]: core::ops::try_trait::Try, -fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow[Self::parent_clause0::parent_clause0, Self::parent_clause1] +fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow<@TraitClause0::Residual, @TraitClause0::Output>[@TraitClause0::parent_clause0::parent_clause0, @TraitClause0::parent_clause1] +where + [@TraitClause0]: core::ops::try_trait::Try, fn core::ops::try_trait::FromResidual::from_residual(@1: R) -> Self +where + [@TraitClause0]: core::ops::try_trait::FromResidual, fn core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0, Self>(@1: &'_0 (Self)) -> usize where - [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause1]: core::iter::traits::iterator::Iterator, fn core::iter::traits::accum::Sum::sum(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Sum, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::accum::Product::product(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Product, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::FromIterator::from_iter(@1: T) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::FromIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend<'_0, Self, A, T>(@1: &'_0 mut (Self), @2: T) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend_one<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) +where + [@TraitClause0]: core::iter::traits::collect::Extend, fn core::iter::traits::collect::Extend::extend_reserve<'_0, Self, A>(@1: &'_0 mut (Self), @2: usize) +where + [@TraitClause0]: core::iter::traits::collect::Extend, unsafe fn core::iter::traits::collect::Extend::extend_one_unchecked<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, -fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, - [@TraitClause5]: core::ops::try_trait::Try, - @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, fn core::iter::traits::double_ended::DoubleEndedIterator::rfold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::exact_size::ExactSizeIterator::len<'_0, Self>(@1: &'_0 (Self)) -> usize +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, fn core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, diff --git a/charon/tests/ui/traits.out b/charon/tests/ui/traits.out index 75569160..91cd09ca 100644 --- a/charon/tests/ui/traits.out +++ b/charon/tests/ui/traits.out @@ -2,8 +2,8 @@ trait test_crate::BoolTrait { - fn get_bool<'_0> = test_crate::BoolTrait::get_bool<'_0_0, Self> - fn ret_true<'_0> = test_crate::BoolTrait::ret_true<'_0_0, Self> + fn get_bool<'_0> = test_crate::BoolTrait::get_bool<'_0_0, Self>[Self] + fn ret_true<'_0> = test_crate::BoolTrait::ret_true<'_0_0, Self>[Self] } fn test_crate::{impl test_crate::BoolTrait for bool}::get_bool<'_0>(@1: &'_0 (bool)) -> bool @@ -21,6 +21,8 @@ impl test_crate::{impl test_crate::BoolTrait for bool} : test_crate::BoolTrait(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: test_crate::BoolTrait, { let @0: bool; // return let self@1: &'_ (Self); // arg #1 @@ -118,6 +120,8 @@ where } fn test_crate::BoolTrait::get_bool<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: test_crate::BoolTrait, fn test_crate::test_bool_trait(@1: T) -> bool where @@ -137,7 +141,7 @@ where trait test_crate::ToU64 { - fn to_u64 = test_crate::ToU64::to_u64 + fn to_u64 = test_crate::ToU64::to_u64[Self] } fn test_crate::{impl test_crate::ToU64 for u64}#2::to_u64(@1: u64) -> u64 @@ -155,6 +159,8 @@ impl test_crate::{impl test_crate::ToU64 for u64}#2 : test_crate::ToU64 } fn test_crate::ToU64::to_u64(@1: Self) -> u64 +where + [@TraitClause0]: test_crate::ToU64, fn test_crate::{impl test_crate::ToU64 for (A, A)}#3::to_u64(@1: (A, A)) -> u64 where @@ -296,7 +302,7 @@ where trait test_crate::ToType { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn to_type = test_crate::ToType::to_type + fn to_type = test_crate::ToType::to_type[Self] } fn test_crate::{impl test_crate::ToType for u64}#5::to_type(@1: u64) -> bool @@ -319,14 +325,15 @@ impl test_crate::{impl test_crate::ToType for u64}#5 : test_crate::ToType< trait test_crate::OfType { - fn of_type, [@TraitClause1]: test_crate::ToType, [@TraitClause2]: core::marker::Sized> = test_crate::OfType::of_type[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn of_type, [@TraitClause1]: test_crate::ToType, [@TraitClause2]: core::marker::Sized> = test_crate::OfType::of_type[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] } fn test_crate::OfType::of_type(@1: T) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: test_crate::ToType, - [@TraitClause2]: core::marker::Sized, + [@TraitClause0]: test_crate::OfType, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: test_crate::ToType, + [@TraitClause3]: core::marker::Sized, fn test_crate::h3(@1: T2) -> T1 where @@ -351,12 +358,13 @@ trait test_crate::OfTypeBis parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: test_crate::ToType parent_clause2 : [@TraitClause2]: core::marker::Sized - fn of_type<[@TraitClause0]: core::marker::Sized> = test_crate::OfTypeBis::of_type[@TraitClause0_0] + fn of_type<[@TraitClause0]: core::marker::Sized> = test_crate::OfTypeBis::of_type[Self, @TraitClause0_0] } fn test_crate::OfTypeBis::of_type(@1: T) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: test_crate::OfTypeBis, + [@TraitClause1]: core::marker::Sized, fn test_crate::h4(@1: T2) -> T1 where @@ -452,6 +460,8 @@ struct test_crate::BoolWrapper = } fn test_crate::ToType::to_type(@1: Self) -> T +where + [@TraitClause0]: test_crate::ToType, fn test_crate::{impl test_crate::ToType for test_crate::BoolWrapper}#7::to_type(@1: test_crate::BoolWrapper) -> T where @@ -496,7 +506,7 @@ trait test_crate::WithConstTy const LEN2 : usize type V type W - fn f<'_0, '_1> = test_crate::WithConstTy::f<'_0_0, '_0_1, Self, const LEN : usize> + fn f<'_0, '_1> = test_crate::WithConstTy::f<'_0_0, '_0_1, Self, const LEN : usize>[Self] } fn test_crate::{impl test_crate::WithConstTy<32 : usize> for bool}#8::LEN1() -> usize @@ -614,8 +624,8 @@ trait test_crate::ParentTrait0 { parent_clause0 : [@TraitClause0]: core::marker::Sized type W - fn get_name<'_0> = test_crate::ParentTrait0::get_name<'_0_0, Self> - fn get_w<'_0> = test_crate::ParentTrait0::get_w<'_0_0, Self> + fn get_name<'_0> = test_crate::ParentTrait0::get_name<'_0_0, Self>[Self] + fn get_w<'_0> = test_crate::ParentTrait0::get_w<'_0_0, Self>[Self] } trait test_crate::ParentTrait1 @@ -627,6 +637,8 @@ trait test_crate::ChildTrait } fn test_crate::ParentTrait0::get_name<'_0, Self>(@1: &'_0 (Self)) -> alloc::string::String +where + [@TraitClause0]: test_crate::ParentTrait0, fn test_crate::test_child_trait1<'_0, T>(@1: &'_0 (T)) -> alloc::string::String where @@ -643,7 +655,9 @@ where return } -fn test_crate::ParentTrait0::get_w<'_0, Self>(@1: &'_0 (Self)) -> Self::W +fn test_crate::ParentTrait0::get_w<'_0, Self>(@1: &'_0 (Self)) -> @TraitClause0::W +where + [@TraitClause0]: test_crate::ParentTrait0, fn test_crate::test_child_trait2<'_0, T>(@1: &'_0 (T)) -> @TraitClause1::parent_clause0::W where @@ -704,7 +718,7 @@ where parent_clause2 : [@TraitClause2]: core::marker::Sized type Item type IntoIter - fn into_iter = test_crate::IntoIterator::into_iter + fn into_iter = test_crate::IntoIterator::into_iter[Self] } trait test_crate::FromResidual @@ -735,7 +749,7 @@ trait test_crate::ParentTrait2 trait test_crate::ChildTrait2 { parent_clause0 : [@TraitClause0]: test_crate::ParentTrait2 - fn convert = test_crate::ChildTrait2::convert + fn convert = test_crate::ChildTrait2::convert[Self] } impl test_crate::{impl test_crate::WithTarget for u32}#11 : test_crate::WithTarget @@ -771,31 +785,33 @@ trait test_crate::CFnOnce parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized type Output - fn call_once = test_crate::CFnOnce::call_once + fn call_once = test_crate::CFnOnce::call_once[Self] } trait test_crate::CFnMut { parent_clause0 : [@TraitClause0]: test_crate::CFnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized - fn call_mut<'_0> = test_crate::CFnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = test_crate::CFnMut::call_mut<'_0_0, Self, Args>[Self] } trait test_crate::CFn { parent_clause0 : [@TraitClause0]: test_crate::CFnMut parent_clause1 : [@TraitClause1]: core::marker::Sized - fn call<'_0> = test_crate::CFn::call<'_0_0, Self, Args> + fn call<'_0> = test_crate::CFn::call<'_0_0, Self, Args>[Self] } trait test_crate::GetTrait { parent_clause0 : [@TraitClause0]: core::marker::Sized type W - fn get_w<'_0> = test_crate::GetTrait::get_w<'_0_0, Self> + fn get_w<'_0> = test_crate::GetTrait::get_w<'_0_0, Self>[Self] } -fn test_crate::GetTrait::get_w<'_0, Self>(@1: &'_0 (Self)) -> Self::W +fn test_crate::GetTrait::get_w<'_0, Self>(@1: &'_0 (Self)) -> @TraitClause0::W +where + [@TraitClause0]: test_crate::GetTrait, fn test_crate::test_get_trait<'_0, T>(@1: &'_0 (T)) -> @TraitClause1::W where @@ -971,7 +987,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -979,7 +995,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } trait core::ops::function::Fn @@ -987,7 +1003,7 @@ trait core::ops::function::Fn parent_clause0 : [@TraitClause0]: core::ops::function::FnMut parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call<'_0> = core::ops::function::Fn::call<'_0_0, Self, Args> + fn call<'_0> = core::ops::function::Fn::call<'_0_0, Self, Args>[Self] } fn test_crate::call<'a, F>(@1: F) @@ -1038,10 +1054,12 @@ where } fn test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestTrait::test<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestTrait, trait test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestTrait { - fn test<'_0> = test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestTrait::test<'_0_0, Self> + fn test<'_0> = test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestTrait::test<'_0_0, Self>[Self] } impl test_crate::{test_crate::TestType[@TraitClause0]}#6::test::{impl test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestTrait for test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestType1} : test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestTrait[@TraitClause0]}#6::test::TestType1> @@ -1049,23 +1067,41 @@ impl test_crate::{test_crate::TestType[@TraitClause0]}#6::test::{impl test_cr fn test<'_0> = test_crate::{test_crate::TestType[@TraitClause0]}#6::test::{impl test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestTrait for test_crate::{test_crate::TestType[@TraitClause0]}#6::test::TestType1}::test<'_0_0> } -fn test_crate::WithConstTy::f<'_0, '_1, Self, const LEN : usize>(@1: &'_0 mut (Self::W), @2: &'_1 (Array)) +fn test_crate::WithConstTy::f<'_0, '_1, Self, const LEN : usize>(@1: &'_0 mut (@TraitClause0::W), @2: &'_1 (Array)) +where + [@TraitClause0]: test_crate::WithConstTy, -fn test_crate::IntoIterator::into_iter(@1: Self) -> Self::IntoIter +fn test_crate::IntoIterator::into_iter(@1: Self) -> @TraitClause0::IntoIter +where + [@TraitClause0]: test_crate::IntoIterator, -fn test_crate::ChildTrait2::convert(@1: Self::parent_clause0::U) -> Self::parent_clause0::parent_clause0::Target +fn test_crate::ChildTrait2::convert(@1: @TraitClause0::parent_clause0::U) -> @TraitClause0::parent_clause0::parent_clause0::Target +where + [@TraitClause0]: test_crate::ChildTrait2, -fn test_crate::CFnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn test_crate::CFnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: test_crate::CFnOnce, -fn test_crate::CFnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn test_crate::CFnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: test_crate::CFnMut, -fn test_crate::CFn::call<'_0, Self, Args>(@1: &'_0 (Self), @2: Args) -> Self::parent_clause0::parent_clause0::Output +fn test_crate::CFn::call<'_0, Self, Args>(@1: &'_0 (Self), @2: Args) -> @TraitClause0::parent_clause0::parent_clause0::Output +where + [@TraitClause0]: test_crate::CFn, -fn core::ops::function::Fn::call<'_0, Self, Args>(@1: &'_0 (Self), @2: Args) -> Self::parent_clause0::parent_clause0::Output +fn core::ops::function::Fn::call<'_0, Self, Args>(@1: &'_0 (Self), @2: Args) -> @TraitClause0::parent_clause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::Fn, -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, diff --git a/charon/tests/ui/traits_special.out b/charon/tests/ui/traits_special.out index 2aa0f9a0..2424c719 100644 --- a/charon/tests/ui/traits_special.out +++ b/charon/tests/ui/traits_special.out @@ -16,7 +16,7 @@ trait test_crate::From parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized type Error - fn from<[@TraitClause0]: core::marker::Sized> = test_crate::From::from[@TraitClause0_0] + fn from<[@TraitClause0]: core::marker::Sized> = test_crate::From::from[Self, @TraitClause0_0] } fn test_crate::{impl test_crate::From<&'_0 (bool)> for bool}::from<'_0>(@1: &'_0 (bool)) -> core::result::Result for bool}<'_>::Error>[core::marker::Sized, core::marker::Sized<()>] @@ -39,9 +39,10 @@ impl<'_0> test_crate::{impl test_crate::From<&'_0 (bool)> for bool}<'_0> : test_ fn from = test_crate::{impl test_crate::From<&'_0 (bool)> for bool}::from<'_0> } -fn test_crate::From::from(@1: T) -> core::result::Result[@TraitClause0, Self::parent_clause1] +fn test_crate::From::from(@1: T) -> core::result::Result[@TraitClause1, @TraitClause0::parent_clause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: test_crate::From, + [@TraitClause1]: core::marker::Sized, diff --git a/charon/tests/ui/type_alias.out b/charon/tests/ui/type_alias.out index 55970f58..3bc02e88 100644 --- a/charon/tests/ui/type_alias.out +++ b/charon/tests/ui/type_alias.out @@ -11,13 +11,13 @@ type test_crate::Generic<'a, T> trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::borrow::Borrow { - fn borrow<'_0> = core::borrow::Borrow::borrow<'_0_0, Self, Borrowed> + fn borrow<'_0> = core::borrow::Borrow::borrow<'_0_0, Self, Borrowed>[Self] } trait alloc::borrow::ToOwned @@ -25,8 +25,8 @@ trait alloc::borrow::ToOwned parent_clause0 : [@TraitClause0]: core::borrow::Borrow parent_clause1 : [@TraitClause1]: core::marker::Sized type Owned - fn to_owned<'_0> = alloc::borrow::ToOwned::to_owned<'_0_0, Self> - fn clone_into<'_0, '_1> = alloc::borrow::ToOwned::clone_into<'_0_0, '_0_1, Self> + fn to_owned<'_0> = alloc::borrow::ToOwned::to_owned<'_0_0, Self>[Self] + fn clone_into<'_0, '_1> = alloc::borrow::ToOwned::clone_into<'_0_0, '_0_1, Self>[Self] } enum alloc::borrow::Cow<'a, B> @@ -91,14 +91,24 @@ type test_crate::GenericWithoutBound<'a, T> [@TraitClause0]: core::marker::Sized, = alloc::borrow::Cow<'a, Slice>[UNKNOWN(Could not find a clause for `Binder { value: <[T] as std::borrow::ToOwned>, bound_vars: [] }` in the current context: `Unimplemented`)] fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, -fn alloc::borrow::ToOwned::to_owned<'_0, Self>(@1: &'_0 (Self)) -> Self::Owned +fn alloc::borrow::ToOwned::to_owned<'_0, Self>(@1: &'_0 (Self)) -> @TraitClause0::Owned +where + [@TraitClause0]: alloc::borrow::ToOwned, -fn alloc::borrow::ToOwned::clone_into<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 mut (Self::Owned)) +fn alloc::borrow::ToOwned::clone_into<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 mut (@TraitClause0::Owned)) +where + [@TraitClause0]: alloc::borrow::ToOwned, fn core::borrow::Borrow::borrow<'_0, Self, Borrowed>(@1: &'_0 (Self)) -> &'_0 (Borrowed) +where + [@TraitClause0]: core::borrow::Borrow, diff --git a/charon/tests/ui/unsize.out b/charon/tests/ui/unsize.out index e05f1ff0..1356260e 100644 --- a/charon/tests/ui/unsize.out +++ b/charon/tests/ui/unsize.out @@ -113,12 +113,14 @@ fn test_crate::foo() } fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } fn alloc::string::{impl core::clone::Clone for alloc::string::String}#6::clone_from<'_0, '_1>(@1: &'_0 mut (alloc::string::String), @2: &'_1 (alloc::string::String)) @@ -131,6 +133,8 @@ impl alloc::string::{impl core::clone::Clone for alloc::string::String}#6 : core } fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, diff --git a/charon/tests/ui/unsupported/issue-79-bound-regions.out b/charon/tests/ui/unsupported/issue-79-bound-regions.out index a50e3c01..c1037349 100644 --- a/charon/tests/ui/unsupported/issue-79-bound-regions.out +++ b/charon/tests/ui/unsupported/issue-79-bound-regions.out @@ -61,7 +61,9 @@ fn test_crate::main() return } -fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::next<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, enum core::result::Result where @@ -79,8 +81,8 @@ opaque type core::array::iter::IntoIter trait core::clone::Clone { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self> - fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self> + fn clone<'_0> = core::clone::Clone::clone<'_0_0, Self>[Self] + fn clone_from<'_0, '_1> = core::clone::Clone::clone_from<'_0_0, '_0_1, Self>[Self] } trait core::marker::Copy @@ -169,7 +171,7 @@ trait core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Tuple parent_clause2 : [@TraitClause2]: core::marker::Sized type Output - fn call_once = core::ops::function::FnOnce::call_once + fn call_once = core::ops::function::FnOnce::call_once[Self] } trait core::ops::function::FnMut @@ -177,7 +179,7 @@ trait core::ops::function::FnMut parent_clause0 : [@TraitClause0]: core::ops::function::FnOnce parent_clause1 : [@TraitClause1]: core::marker::Sized parent_clause2 : [@TraitClause2]: core::marker::Tuple - fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args> + fn call_mut<'_0> = core::ops::function::FnMut::call_mut<'_0_0, Self, Args>[Self] } opaque type core::iter::adapters::map::Map @@ -240,7 +242,7 @@ opaque type core::iter::adapters::inspect::Inspect trait core::ops::try_trait::FromResidual { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn from_residual = core::ops::try_trait::FromResidual::from_residual + fn from_residual = core::ops::try_trait::FromResidual::from_residual[Self] } enum core::ops::control_flow::ControlFlow @@ -259,8 +261,8 @@ trait core::ops::try_trait::Try parent_clause2 : [@TraitClause2]: core::marker::Sized type Output type Residual - fn from_output = core::ops::try_trait::Try::from_output - fn branch = core::ops::try_trait::Try::branch + fn from_output = core::ops::try_trait::Try::from_output[Self] + fn branch = core::ops::try_trait::Try::branch[Self] } trait core::ops::try_trait::Residual @@ -278,19 +280,19 @@ where trait core::default::Default { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn default = core::default::Default::default + fn default = core::default::Default::default[Self] } trait core::cmp::PartialEq { - fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs> - fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs> + fn eq<'_0, '_1> = core::cmp::PartialEq::eq<'_0_0, '_0_1, Self, Rhs>[Self] + fn ne<'_0, '_1> = core::cmp::PartialEq::ne<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Eq { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self> + fn assert_receiver_is_total_eq<'_0> = core::cmp::Eq::assert_receiver_is_total_eq<'_0_0, Self>[Self] } enum core::cmp::Ordering = @@ -302,21 +304,21 @@ enum core::cmp::Ordering = trait core::cmp::PartialOrd { parent_clause0 : [@TraitClause0]: core::cmp::PartialEq - fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs> - fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs> - fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs> - fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs> - fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs> + fn partial_cmp<'_0, '_1> = core::cmp::PartialOrd::partial_cmp<'_0_0, '_0_1, Self, Rhs>[Self] + fn lt<'_0, '_1> = core::cmp::PartialOrd::lt<'_0_0, '_0_1, Self, Rhs>[Self] + fn le<'_0, '_1> = core::cmp::PartialOrd::le<'_0_0, '_0_1, Self, Rhs>[Self] + fn gt<'_0, '_1> = core::cmp::PartialOrd::gt<'_0_0, '_0_1, Self, Rhs>[Self] + fn ge<'_0, '_1> = core::cmp::PartialOrd::ge<'_0_0, '_0_1, Self, Rhs>[Self] } trait core::cmp::Ord { parent_clause0 : [@TraitClause0]: core::cmp::Eq parent_clause1 : [@TraitClause1]: core::cmp::PartialOrd - fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self> - fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[@TraitClause0_0] - fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[@TraitClause0_0] - fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[@TraitClause0_0] + fn cmp<'_0, '_1> = core::cmp::Ord::cmp<'_0_0, '_0_1, Self>[Self] + fn max<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::max[Self, @TraitClause0_0] + fn min<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::min[Self, @TraitClause0_0] + fn clamp<[@TraitClause0]: core::marker::Sized> = core::cmp::Ord::clamp[Self, @TraitClause0_0] } opaque type core::iter::adapters::rev::Rev @@ -339,83 +341,83 @@ trait core::iter::traits::iterator::Iterator { parent_clause0 : [@TraitClause0]: core::marker::Sized type Item - fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self> - fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[@TraitClause0_0] - fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self> - fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[@TraitClause0_0] - fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[@TraitClause0_0] - fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self> - fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self> - fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[@TraitClause0_0] - fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[@TraitClause0_0, @TraitClause0_1] - fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[@TraitClause0_0] - fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[@TraitClause0_0] - fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[@TraitClause0_0] - fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[@TraitClause0_0] - fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[@TraitClause0_0, @TraitClause0_1] - fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[@TraitClause0_0] - fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[@TraitClause0_0] - fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[@TraitClause0_0, @TraitClause0_1] - fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[@TraitClause0_0, @TraitClause0_1] - fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[@TraitClause0_0, @TraitClause0_1] - fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] - fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[@TraitClause0_0, @TraitClause0_1] - fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[@TraitClause0_0] - fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[@TraitClause0_0, @TraitClause0_1] - fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] - fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] - fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[@TraitClause0_0] + fn next<'_0> = core::iter::traits::iterator::Iterator::next<'_0_0, Self>[Self] + fn next_chunk<'_0, const N : usize, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::next_chunk<'_0_0, Self, const N : usize>[Self, @TraitClause0_0] + fn size_hint<'_0> = core::iter::traits::iterator::Iterator::size_hint<'_0_0, Self>[Self] + fn count<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::count[Self, @TraitClause0_0] + fn last<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::last[Self, @TraitClause0_0] + fn advance_by<'_0> = core::iter::traits::iterator::Iterator::advance_by<'_0_0, Self>[Self] + fn nth<'_0> = core::iter::traits::iterator::Iterator::nth<'_0_0, Self>[Self] + fn step_by<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::step_by[Self, @TraitClause0_0] + fn chain, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator, @TraitClause1_2::Item = Self::Item> = core::iter::traits::iterator::Iterator::chain[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn zip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::zip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn intersperse<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::intersperse[Self, @TraitClause0_0, @TraitClause0_1] + fn intersperse_with, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::intersperse_with[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn for_each, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::for_each[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::filter[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn filter_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::filter_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn enumerate<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::enumerate[Self, @TraitClause0_0] + fn peekable<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::peekable[Self, @TraitClause0_0] + fn skip_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::skip_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn take_while, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::take_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn map_while, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::map_while[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn skip<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::skip[Self, @TraitClause0_0] + fn take<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::take[Self, @TraitClause0_0] + fn scan, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = core::option::Option[@TraitClause1_1]> = core::iter::traits::iterator::Iterator::scan[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flat_map, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = U> = core::iter::traits::iterator::Iterator::flat_map[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn flatten<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator> = core::iter::traits::iterator::Iterator::flatten[Self, @TraitClause0_0, @TraitClause0_1] + fn map_windows, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, for<'_0> @TraitClause1_3::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::map_windows[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn fuse<[@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::fuse[Self, @TraitClause0_0] + fn inspect, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = ()> = core::iter::traits::iterator::Iterator::inspect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn by_ref<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::iterator::Iterator::by_ref<'_0_0, Self>[Self, @TraitClause0_0] + fn collect, [@TraitClause1]: core::iter::traits::collect::FromIterator, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_collect<'_0, B, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::try_trait::Try, [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause1_2::Residual, B>, [@TraitClause4]: core::iter::traits::collect::FromIterator> = core::iter::traits::iterator::Iterator::try_collect<'_0_0, Self, B>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn collect_into<'_0, E, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::Extend, [@TraitClause2]: core::marker::Sized> = core::iter::traits::iterator::Iterator::collect_into<'_0_0, Self, E>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn partition, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::default::Default, [@TraitClause4]: core::iter::traits::collect::Extend, [@TraitClause5]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_5::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn partition_in_place<'a, T, P, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, [@TraitClause4]: for<'_0> core::ops::function::FnMut, T : 'a, Self::Item = &'a mut (T), for<'_0> @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn is_partitioned, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_partitioned[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_fold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::iterator::Iterator::try_fold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn try_for_each<'_0, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::ops::try_trait::Try, @TraitClause1_3::parent_clause0::Output = R, @TraitClause1_4::Output = ()> = core::iter::traits::iterator::Iterator::try_for_each<'_0_0, Self, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn fold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::fold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn reduce, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = Self::Item> = core::iter::traits::iterator::Iterator::reduce[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn try_reduce<'_0, R, impl FnMut(Self::Item, Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, @TraitClause1_3::Output = Self::Item, @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_reduce<'_0_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn all<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::all<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn any<'_0, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::any<'_0_0, Self, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::find<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn find_map<'_0, B, F, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = core::option::Option[@TraitClause1_0]> = core::iter::traits::iterator::Iterator::find_map<'_0_0, Self, B, F>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn try_find<'_0, R, impl FnMut(&Self::Item) -> R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized R>, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::try_trait::Try, [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause1_3::Residual, core::option::Option[Self::parent_clause0]>, [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, @TraitClause1_3::Output = bool, for<'_0> @TraitClause1_5::parent_clause0::Output = R> = core::iter::traits::iterator::Iterator::try_find<'_0_0, Self, R, impl FnMut(&Self::Item) -> R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn position<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::ops::function::FnMut, @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::position<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rposition<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::ops::function::FnMut, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause1_1::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::rposition<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::max[Self, @TraitClause0_0, @TraitClause0_1] + fn min<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::Ord> = core::iter::traits::iterator::Iterator::min[Self, @TraitClause0_0, @TraitClause0_1] + fn max_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::max_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn max_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::max_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn min_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_4::parent_clause0::Output = B> = core::iter::traits::iterator::Iterator::min_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn min_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::min_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn rev<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator> = core::iter::traits::iterator::Iterator::rev[Self, @TraitClause0_0, @TraitClause0_1] + fn unzip, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::default::Default, [@TraitClause5]: core::iter::traits::collect::Extend, [@TraitClause6]: core::default::Default, [@TraitClause7]: core::iter::traits::collect::Extend, [@TraitClause8]: core::marker::Sized, [@TraitClause9]: core::iter::traits::iterator::Iterator, Self::Item = (A, B)> = core::iter::traits::iterator::Iterator::unzip[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5, @TraitClause0_6, @TraitClause0_7, @TraitClause0_8, @TraitClause0_9] + fn copied<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::marker::Copy, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::copied<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cloned<'a, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::iterator::Iterator, [@TraitClause3]: core::clone::Clone, T : 'a, Self::Item = &'a (T)> = core::iter::traits::iterator::Iterator::cloned<'a, Self, T>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cycle<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::clone::Clone> = core::iter::traits::iterator::Iterator::cycle[Self, @TraitClause0_0, @TraitClause0_1] + fn array_chunks> = core::iter::traits::iterator::Iterator::array_chunks[Self, @TraitClause0_0] + fn sum, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Sum> = core::iter::traits::iterator::Iterator::sum[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn product, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::iter::traits::accum::Product> = core::iter::traits::iterator::Iterator::product[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::Ord, [@TraitClause3]: core::marker::Sized, @TraitClause1_1::Item = Self::Item> = core::iter::traits::iterator::Iterator::cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::cmp::Ordering> = core::iter::traits::iterator::Iterator::cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn partial_cmp, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::partial_cmp[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn partial_cmp_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = core::option::Option[core::marker::Sized]> = core::iter::traits::iterator::Iterator::partial_cmp_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn eq, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::eq[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn eq_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::iter::traits::collect::IntoIterator, [@TraitClause4]: core::ops::function::FnMut, @TraitClause1_4::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::eq_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn ne, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialEq, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ne[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn lt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::lt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn le, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::le[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn gt, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::gt[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn ge, [@TraitClause1]: core::iter::traits::collect::IntoIterator, [@TraitClause2]: core::cmp::PartialOrd, [@TraitClause3]: core::marker::Sized> = core::iter::traits::iterator::Iterator::ge[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn is_sorted<[@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::cmp::PartialOrd> = core::iter::traits::iterator::Iterator::is_sorted[Self, @TraitClause0_0, @TraitClause0_1] + fn is_sorted_by, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, for<'_0, '_1> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::iterator::Iterator::is_sorted_by[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn is_sorted_by_key, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, [@TraitClause4]: core::cmp::PartialOrd, @TraitClause1_3::parent_clause0::Output = K> = core::iter::traits::iterator::Iterator::is_sorted_by_key[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4] + fn __iterator_get_unchecked<'_0, [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce> = core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0_0, Self>[Self, @TraitClause0_0] } trait core::iter::traits::collect::IntoIterator @@ -427,7 +429,7 @@ where parent_clause2 : [@TraitClause2]: core::marker::Sized type Item type IntoIter - fn into_iter = core::iter::traits::collect::IntoIterator::into_iter + fn into_iter = core::iter::traits::collect::IntoIterator::into_iter[Self] } opaque type core::iter::adapters::intersperse::Intersperse @@ -470,34 +472,34 @@ trait core::iter::traits::collect::FromIterator { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[@TraitClause0_0, @TraitClause0_1] + fn from_iter, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::FromIterator::from_iter[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::collect::Extend { parent_clause0 : [@TraitClause0]: core::marker::Sized - fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[@TraitClause0_0, @TraitClause0_1] - fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A> - fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A> - fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[@TraitClause0_0] + fn extend<'_0, T, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::iter::traits::collect::IntoIterator, @TraitClause1_1::Item = A> = core::iter::traits::collect::Extend::extend<'_0_0, Self, A, T>[Self, @TraitClause0_0, @TraitClause0_1] + fn extend_one<'_0> = core::iter::traits::collect::Extend::extend_one<'_0_0, Self, A>[Self] + fn extend_reserve<'_0> = core::iter::traits::collect::Extend::extend_reserve<'_0_0, Self, A>[Self] + fn extend_one_unchecked<'_0, [@TraitClause0]: core::marker::Sized> = core::iter::traits::collect::Extend::extend_one_unchecked<'_0_0, Self, A>[Self, @TraitClause0_0] } trait core::iter::traits::double_ended::DoubleEndedIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self> - fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self> - fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self> - fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] - fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] - fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[@TraitClause0_0, @TraitClause0_1, @TraitClause0_2] + fn next_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0_0, Self>[Self] + fn advance_back_by<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0_0, Self>[Self] + fn nth_back<'_0> = core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0_0, Self>[Self] + fn try_rfold<'_0, B, F, R, [@TraitClause0]: core::marker::Sized, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause1_4::parent_clause0::Output = R, @TraitClause1_5::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0_0, Self, B, F, R>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3, @TraitClause0_4, @TraitClause0_5] + fn rfold, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::ops::function::FnMut, @TraitClause1_3::parent_clause0::Output = B> = core::iter::traits::double_ended::DoubleEndedIterator::rfold[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2, @TraitClause0_3] + fn rfind<'_0, P, [@TraitClause0]: core::marker::Sized

, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: for<'_0> core::ops::function::FnMut, for<'_0> @TraitClause1_2::parent_clause0::Output = bool> = core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0_0, Self, P>[Self, @TraitClause0_0, @TraitClause0_1, @TraitClause0_2] } trait core::iter::traits::exact_size::ExactSizeIterator { parent_clause0 : [@TraitClause0]: core::iter::traits::iterator::Iterator - fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self> - fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self> + fn len<'_0> = core::iter::traits::exact_size::ExactSizeIterator::len<'_0_0, Self>[Self] + fn is_empty<'_0> = core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0_0, Self>[Self] } opaque type core::iter::adapters::array_chunks::ArrayChunks @@ -509,21 +511,21 @@ trait core::iter::traits::accum::Sum { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[@TraitClause0_0, @TraitClause0_1] + fn sum, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Sum::sum[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::traits::accum::Product { parent_clause0 : [@TraitClause0]: core::marker::Sized parent_clause1 : [@TraitClause1]: core::marker::Sized - fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[@TraitClause0_0, @TraitClause0_1] + fn product, [@TraitClause1]: core::iter::traits::iterator::Iterator, @TraitClause1_1::Item = A> = core::iter::traits::accum::Product::product[Self, @TraitClause0_0, @TraitClause0_1] } trait core::iter::adapters::zip::TrustedRandomAccessNoCoerce { parent_clause0 : [@TraitClause0]: core::marker::Sized const MAY_HAVE_SIDE_EFFECT : bool - fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[@TraitClause0_0] + fn size<'_0, [@TraitClause0]: core::iter::traits::iterator::Iterator> = core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0_0, Self>[Self, @TraitClause0_0] } fn core::slice::iter::{impl core::iter::traits::iterator::Iterator for core::slice::iter::Iter<'a, T>[@TraitClause0]}#182::size_hint<'a, '_1, T>(@1: &'_1 (core::slice::iter::Iter<'a, T>[@TraitClause0])) -> (usize, core::option::Option[core::marker::Sized]) @@ -649,646 +651,787 @@ where fn __iterator_get_unchecked<'_0> = core::slice::iter::{impl core::iter::traits::iterator::Iterator for core::slice::iter::Iter<'a, T>[@TraitClause0]}#182::__iterator_get_unchecked<'a, '_0_0, T>[@TraitClause0] } -fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter[Self::parent_clause0]>[core::marker::Sized>, core::marker::Sized[Self::parent_clause0]>] +fn core::iter::traits::iterator::Iterator::next_chunk<'_0, Self, const N : usize>(@1: &'_0 mut (Self)) -> core::result::Result, core::array::iter::IntoIter<@TraitClause0::Item, const N : usize>[@TraitClause0::parent_clause0]>[core::marker::Sized>, core::marker::Sized[@TraitClause0::parent_clause0]>] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::size_hint<'_0, Self>(@1: &'_0 (Self)) -> (usize, core::option::Option[core::marker::Sized]) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, fn core::iter::traits::iterator::Iterator::count(@1: Self) -> usize where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::last(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::advance_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0] - -fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause0] +fn core::iter::traits::iterator::Iterator::nth<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, -fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::step_by(@1: Self, @2: usize) -> core::iter::adapters::step_by::StepBy[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, - @TraitClause2::Item = Self::Item, -fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause1, @TraitClause2::parent_clause2] +fn core::iter::traits::iterator::Iterator::chain(@1: Self, @2: U) -> core::iter::adapters::chain::Chain[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, + @TraitClause3::Item = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: Self::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::zip(@1: Self, @2: U) -> core::iter::adapters::zip::Zip[@TraitClause2, @TraitClause3::parent_clause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::collect::IntoIterator, -fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause1, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::intersperse(@1: Self, @2: @TraitClause0::Item) -> core::iter::adapters::intersperse::Intersperse[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause2]: core::clone::Clone<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::intersperse_with(@1: Self, @2: G) -> core::iter::adapters::intersperse::IntersperseWith[@TraitClause2, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) +fn core::iter::traits::iterator::Iterator::map(@1: Self, @2: F) -> core::iter::adapters::map::Map[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = (), - -fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause1, @TraitClause0] -where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::for_each(@1: Self, @2: F) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause0] +fn core::iter::traits::iterator::Iterator::filter(@1: Self, @2: P) -> core::iter::adapters::filter::Filter[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::filter_map(@1: Self, @2: F) -> core::iter::adapters::filter_map::FilterMap[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::enumerate(@1: Self) -> core::iter::adapters::enumerate::Enumerate[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::peekable(@1: Self) -> core::iter::adapters::peekable::Peekable[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized

, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause2, @TraitClause1] +fn core::iter::traits::iterator::Iterator::skip_while(@1: Self, @2: P) -> core::iter::adapters::skip_while::SkipWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], - -fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause0] +fn core::iter::traits::iterator::Iterator::take_while(@1: Self, @2: P) -> core::iter::adapters::take_while::TakeWhile[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause3, @TraitClause0, @TraitClause2] +fn core::iter::traits::iterator::Iterator::map_while(@1: Self, @2: P) -> core::iter::adapters::map_while::MapWhile[@TraitClause3, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause2, @TraitClause0, @TraitClause1, @TraitClause3] +fn core::iter::traits::iterator::Iterator::skip(@1: Self, @2: usize) -> core::iter::adapters::skip::Skip[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = U, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause0, Self, @TraitClause1] +fn core::iter::traits::iterator::Iterator::take(@1: Self, @2: usize) -> core::iter::adapters::take::Take[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause2, @TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::scan(@1: Self, @2: St, @3: F) -> core::iter::adapters::scan::Scan[@TraitClause4, @TraitClause1, @TraitClause3] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: for<'_0> core::ops::function::FnMut))>, - for<'_0> @TraitClause3::parent_clause0::Output = R, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = core::option::Option[@TraitClause2], -fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause0] +fn core::iter::traits::iterator::Iterator::flat_map(@1: Self, @2: F) -> core::iter::adapters::flatten::FlatMap[@TraitClause3, @TraitClause1, @TraitClause2, @TraitClause4] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = U, -fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause1, @TraitClause0] +fn core::iter::traits::iterator::Iterator::flatten(@1: Self) -> core::iter::adapters::flatten::Flatten[@TraitClause1, @TraitClause0, @TraitClause2] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = (), + [@TraitClause2]: core::iter::traits::collect::IntoIterator<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) +fn core::iter::traits::iterator::Iterator::map_windows(@1: Self, @2: F) -> core::iter::adapters::map_windows::MapWindows[@TraitClause3, @TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: for<'_0> core::ops::function::FnMut))>, + for<'_0> @TraitClause4::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B +fn core::iter::traits::iterator::Iterator::fuse(@1: Self) -> core::iter::adapters::fuse::Fuse[@TraitClause1] +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::inspect(@1: Self, @2: F) -> core::iter::adapters::inspect::Inspect[@TraitClause2, @TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::FromIterator, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = (), -fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause3::TryType +fn core::iter::traits::iterator::Iterator::by_ref<'_0, Self>(@1: &'_0 mut (Self)) -> &'_0 mut (Self) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::try_trait::Try, - [@TraitClause3]: core::ops::try_trait::Residual<@TraitClause2::Residual, B>, - [@TraitClause4]: core::iter::traits::collect::FromIterator, -fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +fn core::iter::traits::iterator::Iterator::collect(@1: Self) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::Extend, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::FromIterator, + [@TraitClause3]: core::marker::Sized, + +fn core::iter::traits::iterator::Iterator::try_collect<'_0, Self, B>(@1: &'_0 mut (Self)) -> @TraitClause4::TryType +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::try_trait::Try<@TraitClause0::Item>, + [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, B>, + [@TraitClause5]: core::iter::traits::collect::FromIterator, + +fn core::iter::traits::iterator::Iterator::collect_into<'_0, Self, E>(@1: Self, @2: &'_0 mut (E)) -> &'_0 mut (E) +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::Extend, + [@TraitClause3]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partition(@1: Self, @2: F) -> (B, B) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::default::Default, - [@TraitClause4]: core::iter::traits::collect::Extend, - [@TraitClause5]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause5::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::default::Default, + [@TraitClause5]: core::iter::traits::collect::Extend, + [@TraitClause6]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause6::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::partition_in_place<'a, Self, T, P>(@1: Self, @2: P) -> usize where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized

, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::double_ended::DoubleEndedIterator, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized

, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, T : 'a, - Self::Item = &'a mut (T), - for<'_0> @TraitClause4::parent_clause0::Output = bool, + @TraitClause0::Item = &'a mut (T), + for<'_0> @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_partitioned(@1: Self, @2: P) -> bool where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::try_fold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, + +fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +where + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause4]: core::ops::function::FnMut, [@TraitClause5]: core::ops::try_trait::Try, @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + @TraitClause5::Output = (), -fn core::iter::traits::iterator::Iterator::try_for_each<'_0, Self, F, R>(@1: &'_0 mut (Self), @2: F) -> R +fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::ops::try_trait::Try, - @TraitClause3::parent_clause0::Output = R, - @TraitClause4::Output = (), + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::fold(@1: Self, @2: B, @3: F) -> B +fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = @TraitClause0::Item, -fn core::iter::traits::iterator::Iterator::reduce(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: core::ops::function::FnMut R, (@TraitClause0::Item, @TraitClause0::Item)>, + @TraitClause4::Output = @TraitClause0::Item, + @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_reduce<'_0, Self, R, impl FnMut(Self::Item, Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(Self::Item, Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: core::ops::function::FnMut R, (Self::Item, Self::Item)>, - @TraitClause3::Output = Self::Item, - @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::all<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::any<'_0, Self, F>(@1: &'_0 mut (Self), @2: F) -> bool +fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, - @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::find<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause1] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = core::option::Option[@TraitClause1], -fn core::iter::traits::iterator::Iterator::find_map<'_0, Self, B, F>(@1: &'_0 mut (Self), @2: F) -> core::option::Option[@TraitClause0] +fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause5::TryType where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = core::option::Option[@TraitClause0], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized R>, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::try_trait::Try, + [@TraitClause5]: core::ops::try_trait::Residual<@TraitClause4::Residual, core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0]>, + [@TraitClause6]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (@TraitClause0::Item))>, + @TraitClause4::Output = bool, + for<'_0> @TraitClause6::parent_clause0::Output = R, -fn core::iter::traits::iterator::Iterator::try_find<'_0, Self, R, impl FnMut(&Self::Item) -> R>(@1: &'_0 mut (Self), @2: impl FnMut(&Self::Item) -> R) -> @TraitClause4::TryType +fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized R>, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::try_trait::Try, - [@TraitClause4]: core::ops::try_trait::Residual<@TraitClause3::Residual, core::option::Option[Self::parent_clause0]>, - [@TraitClause5]: for<'_0> core::ops::function::FnMut R, (&'_0_0 (Self::Item))>, - @TraitClause3::Output = bool, - for<'_0> @TraitClause5::parent_clause0::Output = R, + [@TraitClause3]: core::ops::function::FnMut, + @TraitClause3::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::position<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::ops::function::FnMut, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::exact_size::ExactSizeIterator, + [@TraitClause5]: core::iter::traits::double_ended::DoubleEndedIterator, @TraitClause2::parent_clause0::Output = bool, -fn core::iter::traits::iterator::Iterator::rposition<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[core::marker::Sized] +fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::ops::function::FnMut, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::exact_size::ExactSizeIterator, - [@TraitClause4]: core::iter::traits::double_ended::DoubleEndedIterator, - @TraitClause1::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::max(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::Ord<@TraitClause0::Item>, -fn core::iter::traits::iterator::Iterator::min(@1: Self) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::Ord, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::max_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::max_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::cmp::Ord, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause5::parent_clause0::Output = B, -fn core::iter::traits::iterator::Iterator::min_by_key(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option<@TraitClause0::Item>[@TraitClause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause4::parent_clause0::Output = B, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = core::cmp::Ordering, -fn core::iter::traits::iterator::Iterator::min_by(@1: Self, @2: F) -> core::option::Option[Self::parent_clause0] +fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = core::cmp::Ordering, - -fn core::iter::traits::iterator::Iterator::rev(@1: Self) -> core::iter::adapters::rev::Rev[@TraitClause0] -where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause2]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::iterator::Iterator::unzip(@1: Self) -> (FromA, FromB) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::default::Default, - [@TraitClause5]: core::iter::traits::collect::Extend, - [@TraitClause6]: core::default::Default, - [@TraitClause7]: core::iter::traits::collect::Extend, - [@TraitClause8]: core::marker::Sized, - [@TraitClause9]: core::iter::traits::iterator::Iterator, - Self::Item = (A, B), - -fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause1] + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::default::Default, + [@TraitClause6]: core::iter::traits::collect::Extend, + [@TraitClause7]: core::default::Default, + [@TraitClause8]: core::iter::traits::collect::Extend, + [@TraitClause9]: core::marker::Sized, + [@TraitClause10]: core::iter::traits::iterator::Iterator, + @TraitClause0::Item = (A, B), + +fn core::iter::traits::iterator::Iterator::copied<'a, Self, T>(@1: Self) -> core::iter::adapters::copied::Copied[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::marker::Copy, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::marker::Copy, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause1] +fn core::iter::traits::iterator::Iterator::cloned<'a, Self, T>(@1: Self) -> core::iter::adapters::cloned::Cloned[@TraitClause2] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::iterator::Iterator, - [@TraitClause3]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::iterator::Iterator, + [@TraitClause4]: core::clone::Clone, T : 'a, - Self::Item = &'a (T), + @TraitClause0::Item = &'a (T), -fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause0] +fn core::iter::traits::iterator::Iterator::cycle(@1: Self) -> core::iter::adapters::cycle::Cycle[@TraitClause1] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::clone::Clone, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::clone::Clone, -fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause0, Self] +fn core::iter::traits::iterator::Iterator::array_chunks(@1: Self) -> core::iter::adapters::array_chunks::ArrayChunks[@TraitClause1, @TraitClause0] where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::sum(@1: Self) -> S where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Sum, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Sum, fn core::iter::traits::iterator::Iterator::product(@1: Self) -> P where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::iter::traits::accum::Product, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::iter::traits::accum::Product, fn core::iter::traits::iterator::Iterator::cmp(@1: Self, @2: I) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::Ord, - [@TraitClause3]: core::marker::Sized, - @TraitClause1::Item = Self::Item, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::Ord<@TraitClause0::Item>, + [@TraitClause4]: core::marker::Sized, + @TraitClause2::Item = @TraitClause0::Item, fn core::iter::traits::iterator::Iterator::cmp_by(@1: Self, @2: I, @3: F) -> core::cmp::Ordering where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::cmp::Ordering, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::cmp::Ordering, fn core::iter::traits::iterator::Iterator::partial_cmp(@1: Self, @2: I) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::partial_cmp_by(@1: Self, @2: I, @3: F) -> core::option::Option[core::marker::Sized] where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = core::option::Option[core::marker::Sized], + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = core::option::Option[core::marker::Sized], fn core::iter::traits::iterator::Iterator::eq(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::eq_by(@1: Self, @2: I, @3: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::iter::traits::collect::IntoIterator, - [@TraitClause4]: core::ops::function::FnMut, - @TraitClause4::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::iter::traits::collect::IntoIterator, + [@TraitClause5]: core::ops::function::FnMut, + @TraitClause5::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::ne(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialEq, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialEq<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::lt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::le(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::gt(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::ge(@1: Self, @2: I) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - [@TraitClause2]: core::cmp::PartialOrd, - [@TraitClause3]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + [@TraitClause3]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause2::Item>, + [@TraitClause4]: core::marker::Sized, fn core::iter::traits::iterator::Iterator::is_sorted(@1: Self) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::cmp::PartialOrd, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::cmp::PartialOrd<@TraitClause0::Item, @TraitClause0::Item>, fn core::iter::traits::iterator::Iterator::is_sorted_by(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0, '_1> core::ops::function::FnMut, - for<'_0, '_1> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0, '_1> core::ops::function::FnMut, + for<'_0, '_1> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::iterator::Iterator::is_sorted_by_key(@1: Self, @2: F) -> bool where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - [@TraitClause4]: core::cmp::PartialOrd, - @TraitClause3::parent_clause0::Output = K, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + [@TraitClause5]: core::cmp::PartialOrd, + @TraitClause4::parent_clause0::Output = K, -unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> Self::Item +unsafe fn core::iter::traits::iterator::Iterator::__iterator_get_unchecked<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> @TraitClause0::Item where - [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause1]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, fn core::clone::Clone::clone<'_0, Self>(@1: &'_0 (Self)) -> Self +where + [@TraitClause0]: core::clone::Clone, fn core::clone::Clone::clone_from<'_0, '_1, Self>(@1: &'_0 mut (Self), @2: &'_1 (Self)) +where + [@TraitClause0]: core::clone::Clone, fn core::cmp::PartialEq::eq<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::PartialEq::ne<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialEq, fn core::cmp::Ord::cmp<'_0, '_1, Self>(@1: &'_0 (Self), @2: &'_1 (Self)) -> core::cmp::Ordering +where + [@TraitClause0]: core::cmp::Ord, fn core::cmp::Ord::max(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::min(@1: Self, @2: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Ord::clamp(@1: Self, @2: Self, @3: Self) -> Self where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::cmp::Ord, + [@TraitClause1]: core::marker::Sized, fn core::cmp::Eq::assert_receiver_is_total_eq<'_0, Self>(@1: &'_0 (Self)) +where + [@TraitClause0]: core::cmp::Eq, fn core::cmp::PartialOrd::partial_cmp<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> core::option::Option[core::marker::Sized] +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::lt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::le<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::gt<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::cmp::PartialOrd::ge<'_0, '_1, Self, Rhs>(@1: &'_0 (Self), @2: &'_1 (Rhs)) -> bool +where + [@TraitClause0]: core::cmp::PartialOrd, fn core::default::Default::default() -> Self +where + [@TraitClause0]: core::default::Default, -fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> Self::parent_clause0::Output +fn core::ops::function::FnMut::call_mut<'_0, Self, Args>(@1: &'_0 mut (Self), @2: Args) -> @TraitClause0::parent_clause0::Output +where + [@TraitClause0]: core::ops::function::FnMut, -fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> Self::Output +fn core::ops::function::FnOnce::call_once(@1: Self, @2: Args) -> @TraitClause0::Output +where + [@TraitClause0]: core::ops::function::FnOnce, -fn core::ops::try_trait::Try::from_output(@1: Self::Output) -> Self +fn core::ops::try_trait::Try::from_output(@1: @TraitClause0::Output) -> Self +where + [@TraitClause0]: core::ops::try_trait::Try, -fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow[Self::parent_clause0::parent_clause0, Self::parent_clause1] +fn core::ops::try_trait::Try::branch(@1: Self) -> core::ops::control_flow::ControlFlow<@TraitClause0::Residual, @TraitClause0::Output>[@TraitClause0::parent_clause0::parent_clause0, @TraitClause0::parent_clause1] +where + [@TraitClause0]: core::ops::try_trait::Try, fn core::ops::try_trait::FromResidual::from_residual(@1: R) -> Self +where + [@TraitClause0]: core::ops::try_trait::FromResidual, fn core::iter::adapters::zip::TrustedRandomAccessNoCoerce::size<'_0, Self>(@1: &'_0 (Self)) -> usize where - [@TraitClause0]: core::iter::traits::iterator::Iterator, + [@TraitClause0]: core::iter::adapters::zip::TrustedRandomAccessNoCoerce, + [@TraitClause1]: core::iter::traits::iterator::Iterator, fn core::iter::traits::accum::Sum::sum(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Sum, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::accum::Product::product(@1: I) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::iterator::Iterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::accum::Product, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::iterator::Iterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::FromIterator::from_iter(@1: T) -> Self where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::FromIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, -fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> Self::IntoIter +fn core::iter::traits::collect::IntoIterator::into_iter(@1: Self) -> @TraitClause0::IntoIter +where + [@TraitClause0]: core::iter::traits::collect::IntoIterator, fn core::iter::traits::collect::Extend::extend<'_0, Self, A, T>(@1: &'_0 mut (Self), @2: T) where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::iter::traits::collect::IntoIterator, - @TraitClause1::Item = A, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::iter::traits::collect::IntoIterator, + @TraitClause2::Item = A, fn core::iter::traits::collect::Extend::extend_one<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) +where + [@TraitClause0]: core::iter::traits::collect::Extend, fn core::iter::traits::collect::Extend::extend_reserve<'_0, Self, A>(@1: &'_0 mut (Self), @2: usize) +where + [@TraitClause0]: core::iter::traits::collect::Extend, unsafe fn core::iter::traits::collect::Extend::extend_one_unchecked<'_0, Self, A>(@1: &'_0 mut (Self), @2: A) where - [@TraitClause0]: core::marker::Sized, + [@TraitClause0]: core::iter::traits::collect::Extend, + [@TraitClause1]: core::marker::Sized, -fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::next_back<'_0, Self>(@1: &'_0 mut (Self)) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::advance_back_by<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::result::Result<(), core::num::nonzero::NonZero[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>[core::marker::Sized<()>, core::marker::Sized[core::marker::Sized, core::num::nonzero::{impl core::num::nonzero::ZeroablePrimitive for usize}#26]>] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, -fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::nth_back<'_0, Self>(@1: &'_0 mut (Self), @2: usize) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] +where + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, fn core::iter::traits::double_ended::DoubleEndedIterator::try_rfold<'_0, Self, B, F, R>(@1: &'_0 mut (Self), @2: B, @3: F) -> R where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::marker::Sized, - [@TraitClause4]: core::ops::function::FnMut, - [@TraitClause5]: core::ops::try_trait::Try, - @TraitClause4::parent_clause0::Output = R, - @TraitClause5::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::marker::Sized, + [@TraitClause5]: core::ops::function::FnMut, + [@TraitClause6]: core::ops::try_trait::Try, + @TraitClause5::parent_clause0::Output = R, + @TraitClause6::Output = B, fn core::iter::traits::double_ended::DoubleEndedIterator::rfold(@1: Self, @2: B, @3: F) -> B where - [@TraitClause0]: core::marker::Sized, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: core::marker::Sized, - [@TraitClause3]: core::ops::function::FnMut, - @TraitClause3::parent_clause0::Output = B, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: core::marker::Sized, + [@TraitClause4]: core::ops::function::FnMut, + @TraitClause4::parent_clause0::Output = B, -fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option[Self::parent_clause0::parent_clause0] +fn core::iter::traits::double_ended::DoubleEndedIterator::rfind<'_0, Self, P>(@1: &'_0 mut (Self), @2: P) -> core::option::Option<@TraitClause0::parent_clause0::Item>[@TraitClause0::parent_clause0::parent_clause0] where - [@TraitClause0]: core::marker::Sized

, - [@TraitClause1]: core::marker::Sized, - [@TraitClause2]: for<'_0> core::ops::function::FnMut, - for<'_0> @TraitClause2::parent_clause0::Output = bool, + [@TraitClause0]: core::iter::traits::double_ended::DoubleEndedIterator, + [@TraitClause1]: core::marker::Sized

, + [@TraitClause2]: core::marker::Sized, + [@TraitClause3]: for<'_0> core::ops::function::FnMut, + for<'_0> @TraitClause3::parent_clause0::Output = bool, fn core::iter::traits::exact_size::ExactSizeIterator::len<'_0, Self>(@1: &'_0 (Self)) -> usize +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator, fn core::iter::traits::exact_size::ExactSizeIterator::is_empty<'_0, Self>(@1: &'_0 (Self)) -> bool +where + [@TraitClause0]: core::iter::traits::exact_size::ExactSizeIterator,