diff --git a/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll index 63a136734652..0926db57c97e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll @@ -26,5 +26,15 @@ module Impl { */ class Trait extends Generated::Trait { override string toStringImpl() { result = "trait " + this.getName().getText() } + + /** + * Gets the number of generic parameters of this trait. + */ + int getNumberOfGenericParams() { + result = this.getGenericParamList().getNumberOfGenericParams() + or + not this.hasGenericParamList() and + result = 0 + } } } diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index d6000c606be6..9e063d215161 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -2,9 +2,10 @@ private import rust private import PathResolution -private import TypeInference private import TypeMention private import codeql.rust.internal.CachedStages +private import codeql.rust.elements.internal.generated.Raw +private import codeql.rust.elements.internal.generated.Synth cached newtype TType = @@ -15,6 +16,7 @@ newtype TType = TArrayType() or // todo: add size? TRefType() or // todo: add mut? TTypeParamTypeParameter(TypeParam t) or + TAssociatedTypeTypeParameter(TypeAlias t) { any(TraitItemNode trait).getAnAssocItem() = t } or TRefTypeParameter() or TSelfTypeParameter(Trait t) @@ -144,6 +146,9 @@ class TraitType extends Type, TTrait { override TypeParameter getTypeParameter(int i) { result = TTypeParamTypeParameter(trait.getGenericParamList().getTypeParam(i)) + or + result = + any(AssociatedTypeTypeParameter param | param.getTrait() = trait and param.getIndex() = i) } pragma[nomagic] @@ -297,6 +302,14 @@ abstract class TypeParameter extends Type { override TypeParameter getTypeParameter(int i) { none() } } +private class RawTypeParameter = @type_param or @trait or @type_alias; + +private predicate id(RawTypeParameter x, RawTypeParameter y) { x = y } + +private predicate idOfRaw(RawTypeParameter x, int y) = equivalenceRelation(id/2)(x, y) + +int idOfTypeParameterAstNode(AstNode node) { idOfRaw(Synth::convertAstNodeToRaw(node), result) } + /** A type parameter from source code. */ class TypeParamTypeParameter extends TypeParameter, TTypeParamTypeParameter { private TypeParam typeParam; @@ -320,6 +333,59 @@ class TypeParamTypeParameter extends TypeParameter, TTypeParamTypeParameter { } } +/** + * Gets the type alias that is the `i`th type parameter of `trait`. Type aliases + * are numbered consecutively but in arbitrary order, starting from the index + * following the last ordinary type parameter. + */ +predicate traitAliasIndex(Trait trait, int i, TypeAlias typeAlias) { + typeAlias = + rank[i + 1 - trait.getNumberOfGenericParams()](TypeAlias alias | + trait.(TraitItemNode).getADescendant() = alias + | + alias order by idOfTypeParameterAstNode(alias) + ) +} + +/** + * A type parameter corresponding to an associated type in a trait. + * + * We treat associated type declarations in traits as type parameters. E.g., a + * trait such as + * ```rust + * trait ATrait { + * type AssociatedType; + * // ... + * } + * ``` + * is treated as if it was + * ```rust + * trait ATrait { + * // ... + * } + * ``` + */ +class AssociatedTypeTypeParameter extends TypeParameter, TAssociatedTypeTypeParameter { + private TypeAlias typeAlias; + + AssociatedTypeTypeParameter() { this = TAssociatedTypeTypeParameter(typeAlias) } + + TypeAlias getTypeAlias() { result = typeAlias } + + /** Gets the trait that contains this associated type declaration. */ + TraitItemNode getTrait() { result.getAnAssocItem() = typeAlias } + + int getIndex() { traitAliasIndex(_, result, typeAlias) } + + override Function getMethod(string name) { none() } + + override string toString() { result = typeAlias.getName().getText() } + + override Location getLocation() { result = typeAlias.getLocation() } + + override TypeMention getABaseTypeMention() { none() } +} + /** An implicit reference type parameter. */ class RefTypeParameter extends TypeParameter, TRefTypeParameter { override Function getMethod(string name) { none() } diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 48fd159fc2b9..2fae9ef1f5b8 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -40,17 +40,21 @@ private module Input1 implements InputSig1 { private newtype TTypeParameterPosition = TTypeParamTypeParameterPosition(TypeParam tp) or - TSelfTypeParameterPosition() + TImplicitTypeParameterPosition() class TypeParameterPosition extends TTypeParameterPosition { TypeParam asTypeParam() { this = TTypeParamTypeParameterPosition(result) } - predicate isSelf() { this = TSelfTypeParameterPosition() } + /** + * Holds if this is the implicit type parameter position used to represent + * parameters that are never passed explicitly as arguments. + */ + predicate isImplicit() { this = TImplicitTypeParameterPosition() } string toString() { result = this.asTypeParam().toString() or - result = "Self" and this.isSelf() + result = "Implicit" and this.isImplicit() } } @@ -69,15 +73,6 @@ private module Input1 implements InputSig1 { apos.asMethodTypeArgumentPosition() = ppos.asTypeParam().getPosition() } - /** A raw AST node that might correspond to a type parameter. */ - private class RawTypeParameter = @type_param or @trait; - - private predicate id(RawTypeParameter x, RawTypeParameter y) { x = y } - - private predicate idOfRaw(RawTypeParameter x, int y) = equivalenceRelation(id/2)(x, y) - - private int idOf(AstNode node) { idOfRaw(Synth::convertAstNodeToRaw(node), result) } - int getTypeParameterId(TypeParameter tp) { tp = rank[result](TypeParameter tp0, int kind, int id | @@ -86,8 +81,9 @@ private module Input1 implements InputSig1 { id = 0 or kind = 1 and - exists(AstNode node | id = idOf(node) | + exists(AstNode node | id = idOfTypeParameterAstNode(node) | node = tp0.(TypeParamTypeParameter).getTypeParam() or + node = tp0.(AssociatedTypeTypeParameter).getTypeAlias() or node = tp0.(SelfTypeParameter).getTrait() ) | @@ -500,7 +496,10 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { exists(TraitItemNode trait | this = trait.getAnAssocItem() | typeParamMatchPosition(trait.getTypeParam(_), result, ppos) or - ppos.isSelf() and result = TSelfTypeParameter(trait) + ppos.isImplicit() and result = TSelfTypeParameter(trait) + or + ppos.isImplicit() and + result.(AssociatedTypeTypeParameter).getTrait() = trait ) } diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index 3390d9592317..df180e8f6cfa 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -95,6 +95,27 @@ class NonAliasPathMention extends PathMention { this = node.getASelfPath() and result = node.(ImplItemNode).getSelfPath().getSegment().getGenericArgList().getTypeArg(i) ) + or + // If `this` is the trait of an `impl` block then any associated types + // defined in the `impl` block are type arguments to the trait. + // + // For instance, for a trait implementation like this + // ```rust + // impl MyTrait for MyType { + // ^^^^^^^ this + // type AssociatedType = i64 + // ^^^ result + // // ... + // } + // ``` + // the rhs. of the type alias is a type argument to the trait. + exists(ImplItemNode impl, AssociatedTypeTypeParameter param, TypeAlias alias | + this = impl.getTraitPath() and + param.getTrait() = resolvePath(this) and + alias = impl.getASuccessor(param.getTypeAlias().getName().getText()) and + result = alias.getTypeRepr() and + param.getIndex() = i + ) } override Type resolveType() { @@ -113,7 +134,11 @@ class NonAliasPathMention extends PathMention { or result = TTypeParamTypeParameter(i) or - result = i.(TypeAlias).getTypeRepr().(TypeReprMention).resolveType() + exists(TypeAlias alias | alias = i | + result.(AssociatedTypeTypeParameter).getTypeAlias() = alias + or + result = alias.getTypeRepr().(TypeReprMention).resolveType() + ) ) } } @@ -153,6 +178,17 @@ class TypeParamMention extends TypeMention, TypeParam { override Type resolveType() { result = TTypeParamTypeParameter(this) } } +// Used to represent implicit type arguments for associated types in traits. +class TypeAliasMention extends TypeMention, TypeAlias { + private Type t; + + TypeAliasMention() { t = TAssociatedTypeTypeParameter(this) } + + override TypeReprMention getTypeArgument(int i) { none() } + + override Type resolveType() { result = t } +} + /** * Holds if the `i`th type argument of `selfPath`, belonging to `impl`, resolves * to type parameter `tp`. @@ -204,7 +240,11 @@ class ImplMention extends TypeMention, ImplItemNode { } class TraitMention extends TypeMention, TraitItemNode { - override TypeMention getTypeArgument(int i) { result = this.getTypeParam(i) } + override TypeMention getTypeArgument(int i) { + result = this.getTypeParam(i) + or + traitAliasIndex(this, i, result) + } override Type resolveType() { result = TTrait(this) } } diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 23a5fbaaa4d7..f9c03c94710e 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -329,9 +329,21 @@ mod function_trait_bounds { } mod trait_associated_type { + #[derive(Debug)] + struct Wrapper { + field: A, + } + + impl Wrapper { + fn unwrap(self) -> A { + self.field // $ fieldof=Wrapper + } + } + trait MyTrait { type AssociatedType; + // MyTrait::m1 fn m1(self) -> Self::AssociatedType; fn m2(self) -> Self::AssociatedType @@ -339,28 +351,129 @@ mod trait_associated_type { Self::AssociatedType: Default, Self: Sized, { + self.m1(); // $ method=MyTrait::m1 type=self.m1():AssociatedType Self::AssociatedType::default() } } + trait MyTraitAssoc2 { + type GenericAssociatedType; + + // MyTrait::put + fn put(&self, a: A) -> Self::GenericAssociatedType; + + fn putTwo(&self, a: A, b: A) -> Self::GenericAssociatedType { + self.put(a); // $ method=MyTrait::put + self.put(b) // $ method=MyTrait::put + } + } + + // A generic trait with multiple associated types. + trait TraitMultipleAssoc { + type Assoc1; + type Assoc2; + + fn get_zero(&self) -> TrG; + + fn get_one(&self) -> Self::Assoc1; + + fn get_two(&self) -> Self::Assoc2; + } + #[derive(Debug, Default)] struct S; + #[derive(Debug, Default)] + struct S2; + + #[derive(Debug, Default)] + struct AT; + impl MyTrait for S { - type AssociatedType = S; + type AssociatedType = AT; // S::m1 fn m1(self) -> Self::AssociatedType { + AT + } + } + + impl MyTraitAssoc2 for S { + // Associated type with a type parameter + type GenericAssociatedType = Wrapper; + + // S::put + fn put(&self, a: A) -> Wrapper { + Wrapper { field: a } + } + } + + impl MyTrait for S2 { + // Associated type definition with a type argument + type AssociatedType = Wrapper; + + fn m1(self) -> Self::AssociatedType { + Wrapper { field: self } + } + } + + // NOTE: This implementation is just to make it possible to call `m2` on `S2.` + impl Default for Wrapper { + fn default() -> Self { + Wrapper { field: S2 } + } + } + + // Function that returns an associated type from a trait bound + fn g(thing: T) -> ::AssociatedType { + thing.m1() // $ method=MyTrait::m1 + } + + impl TraitMultipleAssoc for AT { + type Assoc1 = S; + type Assoc2 = S2; + + fn get_zero(&self) -> AT { + AT + } + + fn get_one(&self) -> Self::Assoc1 { S } + + fn get_two(&self) -> Self::Assoc2 { + S2 + } } pub fn f() { - let x = S; - println!("{:?}", x.m1()); // $ method=S::m1 + let x1 = S; + // Call to method in `impl` block + println!("{:?}", x1.m1()); // $ method=S::m1 type=x1.m1():AT - let x = S; - println!("{:?}", x.m2()); // $ method=m2 + let x2 = S; + // Call to default method in `trait` block + let y = x2.m2(); // $ method=m2 type=y:AT + println!("{:?}", y); + + let x3 = S; + // Call to the method in `impl` block + println!("{:?}", x3.put(1).unwrap()); // $ method=S::put method=unwrap + + // Call to default implementation in `trait` block + println!("{:?}", x3.putTwo(2, 3).unwrap()); // $ method=putTwo MISSING: method=unwrap + + let x4 = g(S); // $ MISSING: type=x4:AT + println!("{:?}", x4); + + let x5 = S2; + println!("{:?}", x5.m1()); // $ method=m1 type=x5.m1():A.S2 + let x6 = S2; + println!("{:?}", x6.m2()); // $ method=m2 type=x6.m2():A.S2 + + let assoc_zero = AT.get_zero(); // $ method=get_zero type=assoc_zero:AT + let assoc_one = AT.get_one(); // $ method=get_one type=assoc_one:S + let assoc_two = AT.get_two(); // $ method=get_two type=assoc_two:S2 } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index ebe21ec72666..c91b3cef3dc3 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -328,591 +328,684 @@ inferType | main.rs:327:46:327:47 | y3 | | main.rs:263:5:266:5 | MyThing | | main.rs:327:46:327:47 | y3 | T | main.rs:263:5:266:5 | MyThing | | main.rs:327:46:327:47 | y3 | T.T | main.rs:270:5:271:14 | S2 | -| main.rs:335:15:335:18 | SelfParam | | main.rs:332:5:344:5 | Self [trait MyTrait] | -| main.rs:337:15:337:18 | SelfParam | | main.rs:332:5:344:5 | Self [trait MyTrait] | -| main.rs:353:15:353:18 | SelfParam | | main.rs:346:5:347:13 | S | -| main.rs:353:45:355:9 | { ... } | | main.rs:346:5:347:13 | S | -| main.rs:354:13:354:13 | S | | main.rs:346:5:347:13 | S | -| main.rs:359:13:359:13 | x | | main.rs:346:5:347:13 | S | -| main.rs:359:17:359:17 | S | | main.rs:346:5:347:13 | S | -| main.rs:360:26:360:26 | x | | main.rs:346:5:347:13 | S | -| main.rs:360:26:360:31 | x.m1() | | main.rs:346:5:347:13 | S | -| main.rs:362:13:362:13 | x | | main.rs:346:5:347:13 | S | -| main.rs:362:17:362:17 | S | | main.rs:346:5:347:13 | S | -| main.rs:363:26:363:26 | x | | main.rs:346:5:347:13 | S | -| main.rs:380:15:380:18 | SelfParam | | main.rs:368:5:372:5 | MyEnum | -| main.rs:380:15:380:18 | SelfParam | A | main.rs:379:10:379:10 | T | -| main.rs:380:26:385:9 | { ... } | | main.rs:379:10:379:10 | T | -| main.rs:381:13:384:13 | match self { ... } | | main.rs:379:10:379:10 | T | -| main.rs:381:19:381:22 | self | | main.rs:368:5:372:5 | MyEnum | -| main.rs:381:19:381:22 | self | A | main.rs:379:10:379:10 | T | -| main.rs:382:28:382:28 | a | | main.rs:379:10:379:10 | T | -| main.rs:382:34:382:34 | a | | main.rs:379:10:379:10 | T | -| main.rs:383:30:383:30 | a | | main.rs:379:10:379:10 | T | -| main.rs:383:37:383:37 | a | | main.rs:379:10:379:10 | T | -| main.rs:389:13:389:13 | x | | main.rs:368:5:372:5 | MyEnum | -| main.rs:389:13:389:13 | x | A | main.rs:374:5:375:14 | S1 | -| main.rs:389:17:389:30 | ...::C1(...) | | main.rs:368:5:372:5 | MyEnum | -| main.rs:389:17:389:30 | ...::C1(...) | A | main.rs:374:5:375:14 | S1 | -| main.rs:389:28:389:29 | S1 | | main.rs:374:5:375:14 | S1 | -| main.rs:390:13:390:13 | y | | main.rs:368:5:372:5 | MyEnum | -| main.rs:390:13:390:13 | y | A | main.rs:376:5:377:14 | S2 | -| main.rs:390:17:390:36 | ...::C2 {...} | | main.rs:368:5:372:5 | MyEnum | -| main.rs:390:17:390:36 | ...::C2 {...} | A | main.rs:376:5:377:14 | S2 | -| main.rs:390:33:390:34 | S2 | | main.rs:376:5:377:14 | S2 | -| main.rs:392:26:392:26 | x | | main.rs:368:5:372:5 | MyEnum | -| main.rs:392:26:392:26 | x | A | main.rs:374:5:375:14 | S1 | -| main.rs:392:26:392:31 | x.m1() | | main.rs:374:5:375:14 | S1 | -| main.rs:393:26:393:26 | y | | main.rs:368:5:372:5 | MyEnum | -| main.rs:393:26:393:26 | y | A | main.rs:376:5:377:14 | S2 | -| main.rs:393:26:393:31 | y.m1() | | main.rs:376:5:377:14 | S2 | -| main.rs:415:15:415:18 | SelfParam | | main.rs:413:5:416:5 | Self [trait MyTrait1] | -| main.rs:419:15:419:18 | SelfParam | | main.rs:418:5:429:5 | Self [trait MyTrait2] | -| main.rs:422:9:428:9 | { ... } | | main.rs:418:20:418:22 | Tr2 | -| main.rs:423:13:427:13 | if ... {...} else {...} | | main.rs:418:20:418:22 | Tr2 | -| main.rs:423:26:425:13 | { ... } | | main.rs:418:20:418:22 | Tr2 | -| main.rs:424:17:424:20 | self | | main.rs:418:5:429:5 | Self [trait MyTrait2] | -| main.rs:424:17:424:25 | self.m1() | | main.rs:418:20:418:22 | Tr2 | -| main.rs:425:20:427:13 | { ... } | | main.rs:418:20:418:22 | Tr2 | -| main.rs:426:17:426:30 | ...::m1(...) | | main.rs:418:20:418:22 | Tr2 | -| main.rs:426:26:426:29 | self | | main.rs:418:5:429:5 | Self [trait MyTrait2] | -| main.rs:432:15:432:18 | SelfParam | | main.rs:431:5:442:5 | Self [trait MyTrait3] | -| main.rs:435:9:441:9 | { ... } | | main.rs:431:20:431:22 | Tr3 | -| main.rs:436:13:440:13 | if ... {...} else {...} | | main.rs:431:20:431:22 | Tr3 | -| main.rs:436:26:438:13 | { ... } | | main.rs:431:20:431:22 | Tr3 | -| main.rs:437:17:437:20 | self | | main.rs:431:5:442:5 | Self [trait MyTrait3] | -| main.rs:437:17:437:25 | self.m2() | | main.rs:398:5:401:5 | MyThing | -| main.rs:437:17:437:25 | self.m2() | A | main.rs:431:20:431:22 | Tr3 | -| main.rs:437:17:437:27 | ... .a | | main.rs:431:20:431:22 | Tr3 | -| main.rs:438:20:440:13 | { ... } | | main.rs:431:20:431:22 | Tr3 | -| main.rs:439:17:439:30 | ...::m2(...) | | main.rs:398:5:401:5 | MyThing | -| main.rs:439:17:439:30 | ...::m2(...) | A | main.rs:431:20:431:22 | Tr3 | -| main.rs:439:17:439:32 | ... .a | | main.rs:431:20:431:22 | Tr3 | -| main.rs:439:26:439:29 | self | | main.rs:431:5:442:5 | Self [trait MyTrait3] | -| main.rs:446:15:446:18 | SelfParam | | main.rs:398:5:401:5 | MyThing | -| main.rs:446:15:446:18 | SelfParam | A | main.rs:444:10:444:10 | T | -| main.rs:446:26:448:9 | { ... } | | main.rs:444:10:444:10 | T | -| main.rs:447:13:447:16 | self | | main.rs:398:5:401:5 | MyThing | -| main.rs:447:13:447:16 | self | A | main.rs:444:10:444:10 | T | -| main.rs:447:13:447:18 | self.a | | main.rs:444:10:444:10 | T | -| main.rs:455:15:455:18 | SelfParam | | main.rs:403:5:406:5 | MyThing2 | -| main.rs:455:15:455:18 | SelfParam | A | main.rs:453:10:453:10 | T | -| main.rs:455:35:457:9 | { ... } | | main.rs:398:5:401:5 | MyThing | -| main.rs:455:35:457:9 | { ... } | A | main.rs:453:10:453:10 | T | -| main.rs:456:13:456:33 | MyThing {...} | | main.rs:398:5:401:5 | MyThing | -| main.rs:456:13:456:33 | MyThing {...} | A | main.rs:453:10:453:10 | T | -| main.rs:456:26:456:29 | self | | main.rs:403:5:406:5 | MyThing2 | -| main.rs:456:26:456:29 | self | A | main.rs:453:10:453:10 | T | -| main.rs:456:26:456:31 | self.a | | main.rs:453:10:453:10 | T | -| main.rs:465:13:465:13 | x | | main.rs:398:5:401:5 | MyThing | -| main.rs:465:13:465:13 | x | A | main.rs:408:5:409:14 | S1 | -| main.rs:465:17:465:33 | MyThing {...} | | main.rs:398:5:401:5 | MyThing | -| main.rs:465:17:465:33 | MyThing {...} | A | main.rs:408:5:409:14 | S1 | -| main.rs:465:30:465:31 | S1 | | main.rs:408:5:409:14 | S1 | -| main.rs:466:13:466:13 | y | | main.rs:398:5:401:5 | MyThing | -| main.rs:466:13:466:13 | y | A | main.rs:410:5:411:14 | S2 | -| main.rs:466:17:466:33 | MyThing {...} | | main.rs:398:5:401:5 | MyThing | -| main.rs:466:17:466:33 | MyThing {...} | A | main.rs:410:5:411:14 | S2 | -| main.rs:466:30:466:31 | S2 | | main.rs:410:5:411:14 | S2 | -| main.rs:468:26:468:26 | x | | main.rs:398:5:401:5 | MyThing | -| main.rs:468:26:468:26 | x | A | main.rs:408:5:409:14 | S1 | -| main.rs:468:26:468:31 | x.m1() | | main.rs:408:5:409:14 | S1 | -| main.rs:469:26:469:26 | y | | main.rs:398:5:401:5 | MyThing | -| main.rs:469:26:469:26 | y | A | main.rs:410:5:411:14 | S2 | -| main.rs:469:26:469:31 | y.m1() | | main.rs:410:5:411:14 | S2 | -| main.rs:471:13:471:13 | x | | main.rs:398:5:401:5 | MyThing | -| main.rs:471:13:471:13 | x | A | main.rs:408:5:409:14 | S1 | -| main.rs:471:17:471:33 | MyThing {...} | | main.rs:398:5:401:5 | MyThing | -| main.rs:471:17:471:33 | MyThing {...} | A | main.rs:408:5:409:14 | S1 | -| main.rs:471:30:471:31 | S1 | | main.rs:408:5:409:14 | S1 | -| main.rs:472:13:472:13 | y | | main.rs:398:5:401:5 | MyThing | -| main.rs:472:13:472:13 | y | A | main.rs:410:5:411:14 | S2 | -| main.rs:472:17:472:33 | MyThing {...} | | main.rs:398:5:401:5 | MyThing | -| main.rs:472:17:472:33 | MyThing {...} | A | main.rs:410:5:411:14 | S2 | -| main.rs:472:30:472:31 | S2 | | main.rs:410:5:411:14 | S2 | -| main.rs:474:26:474:26 | x | | main.rs:398:5:401:5 | MyThing | -| main.rs:474:26:474:26 | x | A | main.rs:408:5:409:14 | S1 | -| main.rs:474:26:474:31 | x.m2() | | main.rs:408:5:409:14 | S1 | -| main.rs:475:26:475:26 | y | | main.rs:398:5:401:5 | MyThing | -| main.rs:475:26:475:26 | y | A | main.rs:410:5:411:14 | S2 | -| main.rs:475:26:475:31 | y.m2() | | main.rs:410:5:411:14 | S2 | -| main.rs:477:13:477:13 | x | | main.rs:403:5:406:5 | MyThing2 | -| main.rs:477:13:477:13 | x | A | main.rs:408:5:409:14 | S1 | -| main.rs:477:17:477:34 | MyThing2 {...} | | main.rs:403:5:406:5 | MyThing2 | -| main.rs:477:17:477:34 | MyThing2 {...} | A | main.rs:408:5:409:14 | S1 | -| main.rs:477:31:477:32 | S1 | | main.rs:408:5:409:14 | S1 | -| main.rs:478:13:478:13 | y | | main.rs:403:5:406:5 | MyThing2 | -| main.rs:478:13:478:13 | y | A | main.rs:410:5:411:14 | S2 | -| main.rs:478:17:478:34 | MyThing2 {...} | | main.rs:403:5:406:5 | MyThing2 | -| main.rs:478:17:478:34 | MyThing2 {...} | A | main.rs:410:5:411:14 | S2 | -| main.rs:478:31:478:32 | S2 | | main.rs:410:5:411:14 | S2 | -| main.rs:480:26:480:26 | x | | main.rs:403:5:406:5 | MyThing2 | -| main.rs:480:26:480:26 | x | A | main.rs:408:5:409:14 | S1 | -| main.rs:480:26:480:31 | x.m3() | | main.rs:408:5:409:14 | S1 | -| main.rs:481:26:481:26 | y | | main.rs:403:5:406:5 | MyThing2 | -| main.rs:481:26:481:26 | y | A | main.rs:410:5:411:14 | S2 | -| main.rs:481:26:481:31 | y.m3() | | main.rs:410:5:411:14 | S2 | -| main.rs:499:22:499:22 | x | | file://:0:0:0:0 | & | -| main.rs:499:22:499:22 | x | &T | main.rs:499:11:499:19 | T | -| main.rs:499:35:501:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:499:35:501:5 | { ... } | &T | main.rs:499:11:499:19 | T | -| main.rs:500:9:500:9 | x | | file://:0:0:0:0 | & | -| main.rs:500:9:500:9 | x | &T | main.rs:499:11:499:19 | T | -| main.rs:504:17:504:20 | SelfParam | | main.rs:489:5:490:14 | S1 | -| main.rs:504:29:506:9 | { ... } | | main.rs:492:5:493:14 | S2 | -| main.rs:505:13:505:14 | S2 | | main.rs:492:5:493:14 | S2 | -| main.rs:509:21:509:21 | x | | main.rs:509:13:509:14 | T1 | -| main.rs:512:5:514:5 | { ... } | | main.rs:509:17:509:18 | T2 | -| main.rs:513:9:513:9 | x | | main.rs:509:13:509:14 | T1 | -| main.rs:513:9:513:16 | x.into() | | main.rs:509:17:509:18 | T2 | -| main.rs:517:13:517:13 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:517:17:517:18 | S1 | | main.rs:489:5:490:14 | S1 | -| main.rs:518:26:518:31 | id(...) | | file://:0:0:0:0 | & | -| main.rs:518:26:518:31 | id(...) | &T | main.rs:489:5:490:14 | S1 | -| main.rs:518:29:518:30 | &x | | file://:0:0:0:0 | & | -| main.rs:518:29:518:30 | &x | &T | main.rs:489:5:490:14 | S1 | -| main.rs:518:30:518:30 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:520:13:520:13 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:520:17:520:18 | S1 | | main.rs:489:5:490:14 | S1 | -| main.rs:521:26:521:37 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:521:26:521:37 | id::<...>(...) | &T | main.rs:489:5:490:14 | S1 | -| main.rs:521:35:521:36 | &x | | file://:0:0:0:0 | & | -| main.rs:521:35:521:36 | &x | &T | main.rs:489:5:490:14 | S1 | -| main.rs:521:36:521:36 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:523:13:523:13 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:523:17:523:18 | S1 | | main.rs:489:5:490:14 | S1 | -| main.rs:524:26:524:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:524:26:524:44 | id::<...>(...) | &T | main.rs:489:5:490:14 | S1 | -| main.rs:524:42:524:43 | &x | | file://:0:0:0:0 | & | -| main.rs:524:42:524:43 | &x | &T | main.rs:489:5:490:14 | S1 | -| main.rs:524:43:524:43 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:526:13:526:13 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:526:17:526:18 | S1 | | main.rs:489:5:490:14 | S1 | -| main.rs:527:9:527:25 | into::<...>(...) | | main.rs:492:5:493:14 | S2 | -| main.rs:527:24:527:24 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:529:13:529:13 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:529:17:529:18 | S1 | | main.rs:489:5:490:14 | S1 | -| main.rs:530:13:530:13 | y | | main.rs:492:5:493:14 | S2 | -| main.rs:530:21:530:27 | into(...) | | main.rs:492:5:493:14 | S2 | -| main.rs:530:26:530:26 | x | | main.rs:489:5:490:14 | S1 | -| main.rs:544:22:544:25 | SelfParam | | main.rs:535:5:541:5 | PairOption | -| main.rs:544:22:544:25 | SelfParam | Fst | main.rs:543:10:543:12 | Fst | -| main.rs:544:22:544:25 | SelfParam | Snd | main.rs:543:15:543:17 | Snd | -| main.rs:544:35:551:9 | { ... } | | main.rs:543:15:543:17 | Snd | -| main.rs:545:13:550:13 | match self { ... } | | main.rs:543:15:543:17 | Snd | -| main.rs:545:19:545:22 | self | | main.rs:535:5:541:5 | PairOption | -| main.rs:545:19:545:22 | self | Fst | main.rs:543:10:543:12 | Fst | -| main.rs:545:19:545:22 | self | Snd | main.rs:543:15:543:17 | Snd | -| main.rs:546:43:546:82 | MacroExpr | | main.rs:543:15:543:17 | Snd | -| main.rs:547:43:547:81 | MacroExpr | | main.rs:543:15:543:17 | Snd | -| main.rs:548:37:548:39 | snd | | main.rs:543:15:543:17 | Snd | -| main.rs:548:45:548:47 | snd | | main.rs:543:15:543:17 | Snd | -| main.rs:549:41:549:43 | snd | | main.rs:543:15:543:17 | Snd | -| main.rs:549:49:549:51 | snd | | main.rs:543:15:543:17 | Snd | -| main.rs:575:10:575:10 | t | | main.rs:535:5:541:5 | PairOption | -| main.rs:575:10:575:10 | t | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:575:10:575:10 | t | Snd | main.rs:535:5:541:5 | PairOption | -| main.rs:575:10:575:10 | t | Snd.Fst | main.rs:557:5:558:14 | S2 | -| main.rs:575:10:575:10 | t | Snd.Snd | main.rs:560:5:561:14 | S3 | -| main.rs:576:13:576:13 | x | | main.rs:560:5:561:14 | S3 | -| main.rs:576:17:576:17 | t | | main.rs:535:5:541:5 | PairOption | -| main.rs:576:17:576:17 | t | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:576:17:576:17 | t | Snd | main.rs:535:5:541:5 | PairOption | -| main.rs:576:17:576:17 | t | Snd.Fst | main.rs:557:5:558:14 | S2 | -| main.rs:576:17:576:17 | t | Snd.Snd | main.rs:560:5:561:14 | S3 | -| main.rs:576:17:576:29 | t.unwrapSnd() | | main.rs:535:5:541:5 | PairOption | -| main.rs:576:17:576:29 | t.unwrapSnd() | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:576:17:576:29 | t.unwrapSnd() | Snd | main.rs:560:5:561:14 | S3 | -| main.rs:576:17:576:41 | ... .unwrapSnd() | | main.rs:560:5:561:14 | S3 | -| main.rs:577:26:577:26 | x | | main.rs:560:5:561:14 | S3 | -| main.rs:582:13:582:14 | p1 | | main.rs:535:5:541:5 | PairOption | -| main.rs:582:13:582:14 | p1 | Fst | main.rs:554:5:555:14 | S1 | -| main.rs:582:13:582:14 | p1 | Snd | main.rs:557:5:558:14 | S2 | -| main.rs:582:26:582:53 | ...::PairBoth(...) | | main.rs:535:5:541:5 | PairOption | -| main.rs:582:26:582:53 | ...::PairBoth(...) | Fst | main.rs:554:5:555:14 | S1 | -| main.rs:582:26:582:53 | ...::PairBoth(...) | Snd | main.rs:557:5:558:14 | S2 | -| main.rs:582:47:582:48 | S1 | | main.rs:554:5:555:14 | S1 | -| main.rs:582:51:582:52 | S2 | | main.rs:557:5:558:14 | S2 | -| main.rs:583:26:583:27 | p1 | | main.rs:535:5:541:5 | PairOption | -| main.rs:583:26:583:27 | p1 | Fst | main.rs:554:5:555:14 | S1 | -| main.rs:583:26:583:27 | p1 | Snd | main.rs:557:5:558:14 | S2 | -| main.rs:586:13:586:14 | p2 | | main.rs:535:5:541:5 | PairOption | -| main.rs:586:13:586:14 | p2 | Fst | main.rs:554:5:555:14 | S1 | -| main.rs:586:13:586:14 | p2 | Snd | main.rs:557:5:558:14 | S2 | -| main.rs:586:26:586:47 | ...::PairNone(...) | | main.rs:535:5:541:5 | PairOption | -| main.rs:586:26:586:47 | ...::PairNone(...) | Fst | main.rs:554:5:555:14 | S1 | -| main.rs:586:26:586:47 | ...::PairNone(...) | Snd | main.rs:557:5:558:14 | S2 | -| main.rs:587:26:587:27 | p2 | | main.rs:535:5:541:5 | PairOption | -| main.rs:587:26:587:27 | p2 | Fst | main.rs:554:5:555:14 | S1 | -| main.rs:587:26:587:27 | p2 | Snd | main.rs:557:5:558:14 | S2 | -| main.rs:590:13:590:14 | p3 | | main.rs:535:5:541:5 | PairOption | -| main.rs:590:13:590:14 | p3 | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:590:13:590:14 | p3 | Snd | main.rs:560:5:561:14 | S3 | -| main.rs:590:34:590:56 | ...::PairSnd(...) | | main.rs:535:5:541:5 | PairOption | -| main.rs:590:34:590:56 | ...::PairSnd(...) | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:590:34:590:56 | ...::PairSnd(...) | Snd | main.rs:560:5:561:14 | S3 | -| main.rs:590:54:590:55 | S3 | | main.rs:560:5:561:14 | S3 | -| main.rs:591:26:591:27 | p3 | | main.rs:535:5:541:5 | PairOption | -| main.rs:591:26:591:27 | p3 | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:591:26:591:27 | p3 | Snd | main.rs:560:5:561:14 | S3 | -| main.rs:594:13:594:14 | p3 | | main.rs:535:5:541:5 | PairOption | -| main.rs:594:13:594:14 | p3 | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:594:13:594:14 | p3 | Snd | main.rs:560:5:561:14 | S3 | -| main.rs:594:35:594:56 | ...::PairNone(...) | | main.rs:535:5:541:5 | PairOption | -| main.rs:594:35:594:56 | ...::PairNone(...) | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:594:35:594:56 | ...::PairNone(...) | Snd | main.rs:560:5:561:14 | S3 | -| main.rs:595:26:595:27 | p3 | | main.rs:535:5:541:5 | PairOption | -| main.rs:595:26:595:27 | p3 | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:595:26:595:27 | p3 | Snd | main.rs:560:5:561:14 | S3 | -| main.rs:597:11:597:54 | ...::PairSnd(...) | | main.rs:535:5:541:5 | PairOption | -| main.rs:597:11:597:54 | ...::PairSnd(...) | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:597:11:597:54 | ...::PairSnd(...) | Snd | main.rs:535:5:541:5 | PairOption | -| main.rs:597:11:597:54 | ...::PairSnd(...) | Snd.Fst | main.rs:557:5:558:14 | S2 | -| main.rs:597:11:597:54 | ...::PairSnd(...) | Snd.Snd | main.rs:560:5:561:14 | S3 | -| main.rs:597:31:597:53 | ...::PairSnd(...) | | main.rs:535:5:541:5 | PairOption | -| main.rs:597:31:597:53 | ...::PairSnd(...) | Fst | main.rs:557:5:558:14 | S2 | -| main.rs:597:31:597:53 | ...::PairSnd(...) | Snd | main.rs:560:5:561:14 | S3 | -| main.rs:597:51:597:52 | S3 | | main.rs:560:5:561:14 | S3 | -| main.rs:610:16:610:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:610:16:610:24 | SelfParam | &T | main.rs:608:5:615:5 | Self [trait MyTrait] | -| main.rs:610:27:610:31 | value | | main.rs:608:19:608:19 | S | -| main.rs:612:21:612:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:612:21:612:29 | SelfParam | &T | main.rs:608:5:615:5 | Self [trait MyTrait] | -| main.rs:612:32:612:36 | value | | main.rs:608:19:608:19 | S | -| main.rs:613:13:613:16 | self | | file://:0:0:0:0 | & | -| main.rs:613:13:613:16 | self | &T | main.rs:608:5:615:5 | Self [trait MyTrait] | -| main.rs:613:22:613:26 | value | | main.rs:608:19:608:19 | S | -| main.rs:619:16:619:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:619:16:619:24 | SelfParam | &T | main.rs:602:5:606:5 | MyOption | -| main.rs:619:16:619:24 | SelfParam | &T.T | main.rs:617:10:617:10 | T | -| main.rs:619:27:619:31 | value | | main.rs:617:10:617:10 | T | -| main.rs:623:26:625:9 | { ... } | | main.rs:602:5:606:5 | MyOption | -| main.rs:623:26:625:9 | { ... } | T | main.rs:622:10:622:10 | T | -| main.rs:624:13:624:30 | ...::MyNone(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:624:13:624:30 | ...::MyNone(...) | T | main.rs:622:10:622:10 | T | -| main.rs:629:20:629:23 | SelfParam | | main.rs:602:5:606:5 | MyOption | -| main.rs:629:20:629:23 | SelfParam | T | main.rs:602:5:606:5 | MyOption | -| main.rs:629:20:629:23 | SelfParam | T.T | main.rs:628:10:628:10 | T | -| main.rs:629:41:634:9 | { ... } | | main.rs:602:5:606:5 | MyOption | -| main.rs:629:41:634:9 | { ... } | T | main.rs:628:10:628:10 | T | -| main.rs:630:13:633:13 | match self { ... } | | main.rs:602:5:606:5 | MyOption | -| main.rs:630:13:633:13 | match self { ... } | T | main.rs:628:10:628:10 | T | -| main.rs:630:19:630:22 | self | | main.rs:602:5:606:5 | MyOption | -| main.rs:630:19:630:22 | self | T | main.rs:602:5:606:5 | MyOption | -| main.rs:630:19:630:22 | self | T.T | main.rs:628:10:628:10 | T | -| main.rs:631:39:631:56 | ...::MyNone(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:631:39:631:56 | ...::MyNone(...) | T | main.rs:628:10:628:10 | T | -| main.rs:632:34:632:34 | x | | main.rs:602:5:606:5 | MyOption | -| main.rs:632:34:632:34 | x | T | main.rs:628:10:628:10 | T | -| main.rs:632:40:632:40 | x | | main.rs:602:5:606:5 | MyOption | -| main.rs:632:40:632:40 | x | T | main.rs:628:10:628:10 | T | -| main.rs:641:13:641:14 | x1 | | main.rs:602:5:606:5 | MyOption | -| main.rs:641:18:641:37 | ...::new(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:642:26:642:27 | x1 | | main.rs:602:5:606:5 | MyOption | -| main.rs:644:13:644:18 | mut x2 | | main.rs:602:5:606:5 | MyOption | -| main.rs:644:13:644:18 | mut x2 | T | main.rs:637:5:638:13 | S | -| main.rs:644:22:644:36 | ...::new(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:644:22:644:36 | ...::new(...) | T | main.rs:637:5:638:13 | S | -| main.rs:645:9:645:10 | x2 | | main.rs:602:5:606:5 | MyOption | -| main.rs:645:9:645:10 | x2 | T | main.rs:637:5:638:13 | S | -| main.rs:645:16:645:16 | S | | main.rs:637:5:638:13 | S | -| main.rs:646:26:646:27 | x2 | | main.rs:602:5:606:5 | MyOption | -| main.rs:646:26:646:27 | x2 | T | main.rs:637:5:638:13 | S | -| main.rs:648:13:648:18 | mut x3 | | main.rs:602:5:606:5 | MyOption | -| main.rs:648:22:648:36 | ...::new(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:649:9:649:10 | x3 | | main.rs:602:5:606:5 | MyOption | -| main.rs:649:21:649:21 | S | | main.rs:637:5:638:13 | S | -| main.rs:650:26:650:27 | x3 | | main.rs:602:5:606:5 | MyOption | -| main.rs:652:13:652:18 | mut x4 | | main.rs:602:5:606:5 | MyOption | -| main.rs:652:13:652:18 | mut x4 | T | main.rs:637:5:638:13 | S | -| main.rs:652:22:652:36 | ...::new(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:652:22:652:36 | ...::new(...) | T | main.rs:637:5:638:13 | S | -| main.rs:653:23:653:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:653:23:653:29 | &mut x4 | &T | main.rs:602:5:606:5 | MyOption | -| main.rs:653:23:653:29 | &mut x4 | &T.T | main.rs:637:5:638:13 | S | -| main.rs:653:28:653:29 | x4 | | main.rs:602:5:606:5 | MyOption | -| main.rs:653:28:653:29 | x4 | T | main.rs:637:5:638:13 | S | -| main.rs:653:32:653:32 | S | | main.rs:637:5:638:13 | S | -| main.rs:654:26:654:27 | x4 | | main.rs:602:5:606:5 | MyOption | -| main.rs:654:26:654:27 | x4 | T | main.rs:637:5:638:13 | S | -| main.rs:656:13:656:14 | x5 | | main.rs:602:5:606:5 | MyOption | -| main.rs:656:13:656:14 | x5 | T | main.rs:602:5:606:5 | MyOption | -| main.rs:656:13:656:14 | x5 | T.T | main.rs:637:5:638:13 | S | -| main.rs:656:18:656:58 | ...::MySome(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:656:18:656:58 | ...::MySome(...) | T | main.rs:602:5:606:5 | MyOption | -| main.rs:656:18:656:58 | ...::MySome(...) | T.T | main.rs:637:5:638:13 | S | -| main.rs:656:35:656:57 | ...::MyNone(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:656:35:656:57 | ...::MyNone(...) | T | main.rs:637:5:638:13 | S | -| main.rs:657:26:657:27 | x5 | | main.rs:602:5:606:5 | MyOption | -| main.rs:657:26:657:27 | x5 | T | main.rs:602:5:606:5 | MyOption | -| main.rs:657:26:657:27 | x5 | T.T | main.rs:637:5:638:13 | S | -| main.rs:659:13:659:14 | x6 | | main.rs:602:5:606:5 | MyOption | -| main.rs:659:13:659:14 | x6 | T | main.rs:602:5:606:5 | MyOption | -| main.rs:659:13:659:14 | x6 | T.T | main.rs:637:5:638:13 | S | -| main.rs:659:18:659:58 | ...::MySome(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:659:18:659:58 | ...::MySome(...) | T | main.rs:602:5:606:5 | MyOption | -| main.rs:659:18:659:58 | ...::MySome(...) | T.T | main.rs:637:5:638:13 | S | -| main.rs:659:35:659:57 | ...::MyNone(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:659:35:659:57 | ...::MyNone(...) | T | main.rs:637:5:638:13 | S | -| main.rs:660:26:660:61 | ...::flatten(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:660:26:660:61 | ...::flatten(...) | T | main.rs:637:5:638:13 | S | -| main.rs:660:59:660:60 | x6 | | main.rs:602:5:606:5 | MyOption | -| main.rs:660:59:660:60 | x6 | T | main.rs:602:5:606:5 | MyOption | -| main.rs:660:59:660:60 | x6 | T.T | main.rs:637:5:638:13 | S | -| main.rs:662:13:662:19 | from_if | | main.rs:602:5:606:5 | MyOption | -| main.rs:662:13:662:19 | from_if | T | main.rs:637:5:638:13 | S | -| main.rs:662:23:666:9 | if ... {...} else {...} | | main.rs:602:5:606:5 | MyOption | -| main.rs:662:23:666:9 | if ... {...} else {...} | T | main.rs:637:5:638:13 | S | -| main.rs:662:36:664:9 | { ... } | | main.rs:602:5:606:5 | MyOption | -| main.rs:662:36:664:9 | { ... } | T | main.rs:637:5:638:13 | S | -| main.rs:663:13:663:30 | ...::MyNone(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:663:13:663:30 | ...::MyNone(...) | T | main.rs:637:5:638:13 | S | -| main.rs:664:16:666:9 | { ... } | | main.rs:602:5:606:5 | MyOption | -| main.rs:664:16:666:9 | { ... } | T | main.rs:637:5:638:13 | S | -| main.rs:665:13:665:31 | ...::MySome(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:665:13:665:31 | ...::MySome(...) | T | main.rs:637:5:638:13 | S | -| main.rs:665:30:665:30 | S | | main.rs:637:5:638:13 | S | -| main.rs:667:26:667:32 | from_if | | main.rs:602:5:606:5 | MyOption | -| main.rs:667:26:667:32 | from_if | T | main.rs:637:5:638:13 | S | -| main.rs:669:13:669:22 | from_match | | main.rs:602:5:606:5 | MyOption | -| main.rs:669:13:669:22 | from_match | T | main.rs:637:5:638:13 | S | -| main.rs:669:26:672:9 | match ... { ... } | | main.rs:602:5:606:5 | MyOption | -| main.rs:669:26:672:9 | match ... { ... } | T | main.rs:637:5:638:13 | S | -| main.rs:670:21:670:38 | ...::MyNone(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:670:21:670:38 | ...::MyNone(...) | T | main.rs:637:5:638:13 | S | -| main.rs:671:22:671:40 | ...::MySome(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:671:22:671:40 | ...::MySome(...) | T | main.rs:637:5:638:13 | S | -| main.rs:671:39:671:39 | S | | main.rs:637:5:638:13 | S | -| main.rs:673:26:673:35 | from_match | | main.rs:602:5:606:5 | MyOption | -| main.rs:673:26:673:35 | from_match | T | main.rs:637:5:638:13 | S | -| main.rs:675:13:675:21 | from_loop | | main.rs:602:5:606:5 | MyOption | -| main.rs:675:13:675:21 | from_loop | T | main.rs:637:5:638:13 | S | -| main.rs:675:25:680:9 | loop { ... } | | main.rs:602:5:606:5 | MyOption | -| main.rs:675:25:680:9 | loop { ... } | T | main.rs:637:5:638:13 | S | -| main.rs:677:23:677:40 | ...::MyNone(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:677:23:677:40 | ...::MyNone(...) | T | main.rs:637:5:638:13 | S | -| main.rs:679:19:679:37 | ...::MySome(...) | | main.rs:602:5:606:5 | MyOption | -| main.rs:679:19:679:37 | ...::MySome(...) | T | main.rs:637:5:638:13 | S | -| main.rs:679:36:679:36 | S | | main.rs:637:5:638:13 | S | -| main.rs:681:26:681:34 | from_loop | | main.rs:602:5:606:5 | MyOption | -| main.rs:681:26:681:34 | from_loop | T | main.rs:637:5:638:13 | S | -| main.rs:694:15:694:18 | SelfParam | | main.rs:687:5:688:19 | S | -| main.rs:694:15:694:18 | SelfParam | T | main.rs:693:10:693:10 | T | -| main.rs:694:26:696:9 | { ... } | | main.rs:693:10:693:10 | T | -| main.rs:695:13:695:16 | self | | main.rs:687:5:688:19 | S | -| main.rs:695:13:695:16 | self | T | main.rs:693:10:693:10 | T | -| main.rs:695:13:695:18 | self.0 | | main.rs:693:10:693:10 | T | -| main.rs:698:15:698:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:698:15:698:19 | SelfParam | &T | main.rs:687:5:688:19 | S | -| main.rs:698:15:698:19 | SelfParam | &T.T | main.rs:693:10:693:10 | T | -| main.rs:698:28:700:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:698:28:700:9 | { ... } | &T | main.rs:693:10:693:10 | T | -| main.rs:699:13:699:19 | &... | | file://:0:0:0:0 | & | -| main.rs:699:13:699:19 | &... | &T | main.rs:693:10:693:10 | T | -| main.rs:699:14:699:17 | self | | file://:0:0:0:0 | & | -| main.rs:699:14:699:17 | self | &T | main.rs:687:5:688:19 | S | -| main.rs:699:14:699:17 | self | &T.T | main.rs:693:10:693:10 | T | -| main.rs:699:14:699:19 | self.0 | | main.rs:693:10:693:10 | T | -| main.rs:702:15:702:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:702:15:702:25 | SelfParam | &T | main.rs:687:5:688:19 | S | -| main.rs:702:15:702:25 | SelfParam | &T.T | main.rs:693:10:693:10 | T | -| main.rs:702:34:704:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:702:34:704:9 | { ... } | &T | main.rs:693:10:693:10 | T | -| main.rs:703:13:703:19 | &... | | file://:0:0:0:0 | & | -| main.rs:703:13:703:19 | &... | &T | main.rs:693:10:693:10 | T | -| main.rs:703:14:703:17 | self | | file://:0:0:0:0 | & | -| main.rs:703:14:703:17 | self | &T | main.rs:687:5:688:19 | S | -| main.rs:703:14:703:17 | self | &T.T | main.rs:693:10:693:10 | T | -| main.rs:703:14:703:19 | self.0 | | main.rs:693:10:693:10 | T | -| main.rs:708:13:708:14 | x1 | | main.rs:687:5:688:19 | S | -| main.rs:708:13:708:14 | x1 | T | main.rs:690:5:691:14 | S2 | -| main.rs:708:18:708:22 | S(...) | | main.rs:687:5:688:19 | S | -| main.rs:708:18:708:22 | S(...) | T | main.rs:690:5:691:14 | S2 | -| main.rs:708:20:708:21 | S2 | | main.rs:690:5:691:14 | S2 | -| main.rs:709:26:709:27 | x1 | | main.rs:687:5:688:19 | S | -| main.rs:709:26:709:27 | x1 | T | main.rs:690:5:691:14 | S2 | -| main.rs:709:26:709:32 | x1.m1() | | main.rs:690:5:691:14 | S2 | -| main.rs:711:13:711:14 | x2 | | main.rs:687:5:688:19 | S | -| main.rs:711:13:711:14 | x2 | T | main.rs:690:5:691:14 | S2 | -| main.rs:711:18:711:22 | S(...) | | main.rs:687:5:688:19 | S | -| main.rs:711:18:711:22 | S(...) | T | main.rs:690:5:691:14 | S2 | -| main.rs:711:20:711:21 | S2 | | main.rs:690:5:691:14 | S2 | -| main.rs:713:26:713:27 | x2 | | main.rs:687:5:688:19 | S | -| main.rs:713:26:713:27 | x2 | T | main.rs:690:5:691:14 | S2 | -| main.rs:713:26:713:32 | x2.m2() | | file://:0:0:0:0 | & | -| main.rs:713:26:713:32 | x2.m2() | &T | main.rs:690:5:691:14 | S2 | -| main.rs:714:26:714:27 | x2 | | main.rs:687:5:688:19 | S | -| main.rs:714:26:714:27 | x2 | T | main.rs:690:5:691:14 | S2 | -| main.rs:714:26:714:32 | x2.m3() | | file://:0:0:0:0 | & | -| main.rs:714:26:714:32 | x2.m3() | &T | main.rs:690:5:691:14 | S2 | -| main.rs:716:13:716:14 | x3 | | main.rs:687:5:688:19 | S | -| main.rs:716:13:716:14 | x3 | T | main.rs:690:5:691:14 | S2 | -| main.rs:716:18:716:22 | S(...) | | main.rs:687:5:688:19 | S | -| main.rs:716:18:716:22 | S(...) | T | main.rs:690:5:691:14 | S2 | -| main.rs:716:20:716:21 | S2 | | main.rs:690:5:691:14 | S2 | -| main.rs:718:26:718:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:718:26:718:41 | ...::m2(...) | &T | main.rs:690:5:691:14 | S2 | -| main.rs:718:38:718:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:718:38:718:40 | &x3 | &T | main.rs:687:5:688:19 | S | -| main.rs:718:38:718:40 | &x3 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:718:39:718:40 | x3 | | main.rs:687:5:688:19 | S | -| main.rs:718:39:718:40 | x3 | T | main.rs:690:5:691:14 | S2 | -| main.rs:719:26:719:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:719:26:719:41 | ...::m3(...) | &T | main.rs:690:5:691:14 | S2 | -| main.rs:719:38:719:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:719:38:719:40 | &x3 | &T | main.rs:687:5:688:19 | S | -| main.rs:719:38:719:40 | &x3 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:719:39:719:40 | x3 | | main.rs:687:5:688:19 | S | -| main.rs:719:39:719:40 | x3 | T | main.rs:690:5:691:14 | S2 | -| main.rs:721:13:721:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:721:13:721:14 | x4 | &T | main.rs:687:5:688:19 | S | -| main.rs:721:13:721:14 | x4 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:721:18:721:23 | &... | | file://:0:0:0:0 | & | -| main.rs:721:18:721:23 | &... | &T | main.rs:687:5:688:19 | S | -| main.rs:721:18:721:23 | &... | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:721:19:721:23 | S(...) | | main.rs:687:5:688:19 | S | -| main.rs:721:19:721:23 | S(...) | T | main.rs:690:5:691:14 | S2 | -| main.rs:721:21:721:22 | S2 | | main.rs:690:5:691:14 | S2 | -| main.rs:723:26:723:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:723:26:723:27 | x4 | &T | main.rs:687:5:688:19 | S | -| main.rs:723:26:723:27 | x4 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:723:26:723:32 | x4.m2() | | file://:0:0:0:0 | & | -| main.rs:723:26:723:32 | x4.m2() | &T | main.rs:690:5:691:14 | S2 | -| main.rs:724:26:724:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:724:26:724:27 | x4 | &T | main.rs:687:5:688:19 | S | -| main.rs:724:26:724:27 | x4 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:724:26:724:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:724:26:724:32 | x4.m3() | &T | main.rs:690:5:691:14 | S2 | -| main.rs:726:13:726:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:726:13:726:14 | x5 | &T | main.rs:687:5:688:19 | S | -| main.rs:726:13:726:14 | x5 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:726:18:726:23 | &... | | file://:0:0:0:0 | & | -| main.rs:726:18:726:23 | &... | &T | main.rs:687:5:688:19 | S | -| main.rs:726:18:726:23 | &... | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:726:19:726:23 | S(...) | | main.rs:687:5:688:19 | S | -| main.rs:726:19:726:23 | S(...) | T | main.rs:690:5:691:14 | S2 | -| main.rs:726:21:726:22 | S2 | | main.rs:690:5:691:14 | S2 | -| main.rs:728:26:728:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:728:26:728:27 | x5 | &T | main.rs:687:5:688:19 | S | -| main.rs:728:26:728:27 | x5 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:728:26:728:32 | x5.m1() | | main.rs:690:5:691:14 | S2 | -| main.rs:729:26:729:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:729:26:729:27 | x5 | &T | main.rs:687:5:688:19 | S | -| main.rs:729:26:729:27 | x5 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:729:26:729:29 | x5.0 | | main.rs:690:5:691:14 | S2 | -| main.rs:731:13:731:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:731:13:731:14 | x6 | &T | main.rs:687:5:688:19 | S | -| main.rs:731:13:731:14 | x6 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:731:18:731:23 | &... | | file://:0:0:0:0 | & | -| main.rs:731:18:731:23 | &... | &T | main.rs:687:5:688:19 | S | -| main.rs:731:18:731:23 | &... | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:731:19:731:23 | S(...) | | main.rs:687:5:688:19 | S | -| main.rs:731:19:731:23 | S(...) | T | main.rs:690:5:691:14 | S2 | -| main.rs:731:21:731:22 | S2 | | main.rs:690:5:691:14 | S2 | -| main.rs:733:26:733:30 | (...) | | main.rs:687:5:688:19 | S | -| main.rs:733:26:733:30 | (...) | T | main.rs:690:5:691:14 | S2 | -| main.rs:733:26:733:35 | ... .m1() | | main.rs:690:5:691:14 | S2 | -| main.rs:733:27:733:29 | * ... | | main.rs:687:5:688:19 | S | -| main.rs:733:27:733:29 | * ... | T | main.rs:690:5:691:14 | S2 | -| main.rs:733:28:733:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:733:28:733:29 | x6 | &T | main.rs:687:5:688:19 | S | -| main.rs:733:28:733:29 | x6 | &T.T | main.rs:690:5:691:14 | S2 | -| main.rs:740:16:740:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:740:16:740:20 | SelfParam | &T | main.rs:738:5:746:5 | Self [trait MyTrait] | -| main.rs:743:16:743:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:743:16:743:20 | SelfParam | &T | main.rs:738:5:746:5 | Self [trait MyTrait] | -| main.rs:743:32:745:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:743:32:745:9 | { ... } | &T | main.rs:738:5:746:5 | Self [trait MyTrait] | -| main.rs:744:13:744:16 | self | | file://:0:0:0:0 | & | -| main.rs:744:13:744:16 | self | &T | main.rs:738:5:746:5 | Self [trait MyTrait] | -| main.rs:744:13:744:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:744:13:744:22 | self.foo() | &T | main.rs:738:5:746:5 | Self [trait MyTrait] | -| main.rs:752:16:752:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:752:16:752:20 | SelfParam | &T | main.rs:748:5:748:20 | MyStruct | -| main.rs:752:36:754:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:752:36:754:9 | { ... } | &T | main.rs:748:5:748:20 | MyStruct | -| main.rs:753:13:753:16 | self | | file://:0:0:0:0 | & | -| main.rs:753:13:753:16 | self | &T | main.rs:748:5:748:20 | MyStruct | -| main.rs:758:13:758:13 | x | | main.rs:748:5:748:20 | MyStruct | -| main.rs:758:17:758:24 | MyStruct | | main.rs:748:5:748:20 | MyStruct | -| main.rs:759:9:759:9 | x | | main.rs:748:5:748:20 | MyStruct | -| main.rs:759:9:759:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:759:9:759:15 | x.bar() | &T | main.rs:748:5:748:20 | MyStruct | -| main.rs:769:16:769:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:769:16:769:20 | SelfParam | &T | main.rs:766:5:766:26 | MyStruct | -| main.rs:769:16:769:20 | SelfParam | &T.T | main.rs:768:10:768:10 | T | -| main.rs:769:32:771:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:769:32:771:9 | { ... } | &T | main.rs:766:5:766:26 | MyStruct | -| main.rs:769:32:771:9 | { ... } | &T.T | main.rs:768:10:768:10 | T | -| main.rs:770:13:770:16 | self | | file://:0:0:0:0 | & | -| main.rs:770:13:770:16 | self | &T | main.rs:766:5:766:26 | MyStruct | -| main.rs:770:13:770:16 | self | &T.T | main.rs:768:10:768:10 | T | -| main.rs:775:13:775:13 | x | | main.rs:766:5:766:26 | MyStruct | -| main.rs:775:13:775:13 | x | T | main.rs:764:5:764:13 | S | -| main.rs:775:17:775:27 | MyStruct(...) | | main.rs:766:5:766:26 | MyStruct | -| main.rs:775:17:775:27 | MyStruct(...) | T | main.rs:764:5:764:13 | S | -| main.rs:775:26:775:26 | S | | main.rs:764:5:764:13 | S | -| main.rs:776:9:776:9 | x | | main.rs:766:5:766:26 | MyStruct | -| main.rs:776:9:776:9 | x | T | main.rs:764:5:764:13 | S | -| main.rs:776:9:776:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:776:9:776:15 | x.foo() | &T | main.rs:766:5:766:26 | MyStruct | -| main.rs:776:9:776:15 | x.foo() | &T.T | main.rs:764:5:764:13 | S | -| main.rs:784:15:784:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:784:15:784:19 | SelfParam | &T | main.rs:781:5:781:13 | S | -| main.rs:784:31:786:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:784:31:786:9 | { ... } | &T | main.rs:781:5:781:13 | S | -| main.rs:785:13:785:19 | &... | | file://:0:0:0:0 | & | -| main.rs:785:13:785:19 | &... | &T | main.rs:781:5:781:13 | S | -| main.rs:785:14:785:19 | &... | | file://:0:0:0:0 | & | -| main.rs:785:14:785:19 | &... | &T | main.rs:781:5:781:13 | S | -| main.rs:785:15:785:19 | &self | | file://:0:0:0:0 | & | -| main.rs:785:15:785:19 | &self | &T | main.rs:781:5:781:13 | S | -| main.rs:785:16:785:19 | self | | file://:0:0:0:0 | & | -| main.rs:785:16:785:19 | self | &T | main.rs:781:5:781:13 | S | -| main.rs:788:15:788:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:788:15:788:25 | SelfParam | &T | main.rs:781:5:781:13 | S | -| main.rs:788:37:790:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:788:37:790:9 | { ... } | &T | main.rs:781:5:781:13 | S | -| main.rs:789:13:789:19 | &... | | file://:0:0:0:0 | & | -| main.rs:789:13:789:19 | &... | &T | main.rs:781:5:781:13 | S | -| main.rs:789:14:789:19 | &... | | file://:0:0:0:0 | & | -| main.rs:789:14:789:19 | &... | &T | main.rs:781:5:781:13 | S | -| main.rs:789:15:789:19 | &self | | file://:0:0:0:0 | & | -| main.rs:789:15:789:19 | &self | &T | main.rs:781:5:781:13 | S | -| main.rs:789:16:789:19 | self | | file://:0:0:0:0 | & | -| main.rs:789:16:789:19 | self | &T | main.rs:781:5:781:13 | S | -| main.rs:792:15:792:15 | x | | file://:0:0:0:0 | & | -| main.rs:792:15:792:15 | x | &T | main.rs:781:5:781:13 | S | -| main.rs:792:34:794:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:792:34:794:9 | { ... } | &T | main.rs:781:5:781:13 | S | -| main.rs:793:13:793:13 | x | | file://:0:0:0:0 | & | -| main.rs:793:13:793:13 | x | &T | main.rs:781:5:781:13 | S | -| main.rs:796:15:796:15 | x | | file://:0:0:0:0 | & | -| main.rs:796:15:796:15 | x | &T | main.rs:781:5:781:13 | S | -| main.rs:796:34:798:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:796:34:798:9 | { ... } | &T | main.rs:781:5:781:13 | S | -| main.rs:797:13:797:16 | &... | | file://:0:0:0:0 | & | -| main.rs:797:13:797:16 | &... | &T | main.rs:781:5:781:13 | S | -| main.rs:797:14:797:16 | &... | | file://:0:0:0:0 | & | -| main.rs:797:14:797:16 | &... | &T | main.rs:781:5:781:13 | S | -| main.rs:797:15:797:16 | &x | | file://:0:0:0:0 | & | -| main.rs:797:15:797:16 | &x | &T | main.rs:781:5:781:13 | S | -| main.rs:797:16:797:16 | x | | file://:0:0:0:0 | & | -| main.rs:797:16:797:16 | x | &T | main.rs:781:5:781:13 | S | -| main.rs:802:13:802:13 | x | | main.rs:781:5:781:13 | S | -| main.rs:802:17:802:20 | S {...} | | main.rs:781:5:781:13 | S | -| main.rs:803:9:803:9 | x | | main.rs:781:5:781:13 | S | -| main.rs:803:9:803:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:803:9:803:14 | x.f1() | &T | main.rs:781:5:781:13 | S | -| main.rs:804:9:804:9 | x | | main.rs:781:5:781:13 | S | -| main.rs:804:9:804:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:804:9:804:14 | x.f2() | &T | main.rs:781:5:781:13 | S | -| main.rs:805:9:805:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:805:9:805:17 | ...::f3(...) | &T | main.rs:781:5:781:13 | S | -| main.rs:805:15:805:16 | &x | | file://:0:0:0:0 | & | -| main.rs:805:15:805:16 | &x | &T | main.rs:781:5:781:13 | S | -| main.rs:805:16:805:16 | x | | main.rs:781:5:781:13 | S | -| main.rs:811:5:811:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:812:5:812:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:812:20:812:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:812:41:812:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:338:19:338:22 | SelfParam | | main.rs:332:5:335:5 | Wrapper | +| main.rs:338:19:338:22 | SelfParam | A | main.rs:337:10:337:10 | A | +| main.rs:338:30:340:9 | { ... } | | main.rs:337:10:337:10 | A | +| main.rs:339:13:339:16 | self | | main.rs:332:5:335:5 | Wrapper | +| main.rs:339:13:339:16 | self | A | main.rs:337:10:337:10 | A | +| main.rs:339:13:339:22 | self.field | | main.rs:337:10:337:10 | A | +| main.rs:347:15:347:18 | SelfParam | | main.rs:343:5:357:5 | Self [trait MyTrait] | +| main.rs:349:15:349:18 | SelfParam | | main.rs:343:5:357:5 | Self [trait MyTrait] | +| main.rs:353:9:356:9 | { ... } | | main.rs:344:9:344:28 | AssociatedType | +| main.rs:354:13:354:16 | self | | main.rs:343:5:357:5 | Self [trait MyTrait] | +| main.rs:354:13:354:21 | self.m1() | | main.rs:344:9:344:28 | AssociatedType | +| main.rs:355:13:355:43 | ...::default(...) | | main.rs:344:9:344:28 | AssociatedType | +| main.rs:363:19:363:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:363:19:363:23 | SelfParam | &T | main.rs:359:5:369:5 | Self [trait MyTraitAssoc2] | +| main.rs:363:26:363:26 | a | | main.rs:363:16:363:16 | A | +| main.rs:365:22:365:26 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:365:22:365:26 | SelfParam | &T | main.rs:359:5:369:5 | Self [trait MyTraitAssoc2] | +| main.rs:365:29:365:29 | a | | main.rs:365:19:365:19 | A | +| main.rs:365:35:365:35 | b | | main.rs:365:19:365:19 | A | +| main.rs:365:75:368:9 | { ... } | | main.rs:360:9:360:52 | GenericAssociatedType | +| main.rs:366:13:366:16 | self | | file://:0:0:0:0 | & | +| main.rs:366:13:366:16 | self | &T | main.rs:359:5:369:5 | Self [trait MyTraitAssoc2] | +| main.rs:366:13:366:23 | self.put(...) | | main.rs:360:9:360:52 | GenericAssociatedType | +| main.rs:366:22:366:22 | a | | main.rs:365:19:365:19 | A | +| main.rs:367:13:367:16 | self | | file://:0:0:0:0 | & | +| main.rs:367:13:367:16 | self | &T | main.rs:359:5:369:5 | Self [trait MyTraitAssoc2] | +| main.rs:367:13:367:23 | self.put(...) | | main.rs:360:9:360:52 | GenericAssociatedType | +| main.rs:367:22:367:22 | b | | main.rs:365:19:365:19 | A | +| main.rs:376:21:376:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:376:21:376:25 | SelfParam | &T | main.rs:371:5:381:5 | Self [trait TraitMultipleAssoc] | +| main.rs:378:20:378:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:378:20:378:24 | SelfParam | &T | main.rs:371:5:381:5 | Self [trait TraitMultipleAssoc] | +| main.rs:380:20:380:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:380:20:380:24 | SelfParam | &T | main.rs:371:5:381:5 | Self [trait TraitMultipleAssoc] | +| main.rs:396:15:396:18 | SelfParam | | main.rs:383:5:384:13 | S | +| main.rs:396:45:398:9 | { ... } | | main.rs:389:5:390:14 | AT | +| main.rs:397:13:397:14 | AT | | main.rs:389:5:390:14 | AT | +| main.rs:406:19:406:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:406:19:406:23 | SelfParam | &T | main.rs:383:5:384:13 | S | +| main.rs:406:26:406:26 | a | | main.rs:406:16:406:16 | A | +| main.rs:406:46:408:9 | { ... } | | main.rs:332:5:335:5 | Wrapper | +| main.rs:406:46:408:9 | { ... } | A | main.rs:406:16:406:16 | A | +| main.rs:407:13:407:32 | Wrapper {...} | | main.rs:332:5:335:5 | Wrapper | +| main.rs:407:13:407:32 | Wrapper {...} | A | main.rs:406:16:406:16 | A | +| main.rs:407:30:407:30 | a | | main.rs:406:16:406:16 | A | +| main.rs:415:15:415:18 | SelfParam | | main.rs:386:5:387:14 | S2 | +| main.rs:415:45:417:9 | { ... } | | main.rs:332:5:335:5 | Wrapper | +| main.rs:415:45:417:9 | { ... } | A | main.rs:386:5:387:14 | S2 | +| main.rs:416:13:416:35 | Wrapper {...} | | main.rs:332:5:335:5 | Wrapper | +| main.rs:416:13:416:35 | Wrapper {...} | A | main.rs:386:5:387:14 | S2 | +| main.rs:416:30:416:33 | self | | main.rs:386:5:387:14 | S2 | +| main.rs:422:30:424:9 | { ... } | | main.rs:332:5:335:5 | Wrapper | +| main.rs:422:30:424:9 | { ... } | A | main.rs:386:5:387:14 | S2 | +| main.rs:423:13:423:33 | Wrapper {...} | | main.rs:332:5:335:5 | Wrapper | +| main.rs:423:13:423:33 | Wrapper {...} | A | main.rs:386:5:387:14 | S2 | +| main.rs:423:30:423:31 | S2 | | main.rs:386:5:387:14 | S2 | +| main.rs:428:22:428:26 | thing | | main.rs:428:10:428:19 | T | +| main.rs:429:9:429:13 | thing | | main.rs:428:10:428:19 | T | +| main.rs:436:21:436:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:436:21:436:25 | SelfParam | &T | main.rs:389:5:390:14 | AT | +| main.rs:436:34:438:9 | { ... } | | main.rs:389:5:390:14 | AT | +| main.rs:437:13:437:14 | AT | | main.rs:389:5:390:14 | AT | +| main.rs:440:20:440:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:440:20:440:24 | SelfParam | &T | main.rs:389:5:390:14 | AT | +| main.rs:440:43:442:9 | { ... } | | main.rs:383:5:384:13 | S | +| main.rs:441:13:441:13 | S | | main.rs:383:5:384:13 | S | +| main.rs:444:20:444:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:444:20:444:24 | SelfParam | &T | main.rs:389:5:390:14 | AT | +| main.rs:444:43:446:9 | { ... } | | main.rs:386:5:387:14 | S2 | +| main.rs:445:13:445:14 | S2 | | main.rs:386:5:387:14 | S2 | +| main.rs:450:13:450:14 | x1 | | main.rs:383:5:384:13 | S | +| main.rs:450:18:450:18 | S | | main.rs:383:5:384:13 | S | +| main.rs:452:26:452:27 | x1 | | main.rs:383:5:384:13 | S | +| main.rs:452:26:452:32 | x1.m1() | | main.rs:389:5:390:14 | AT | +| main.rs:454:13:454:14 | x2 | | main.rs:383:5:384:13 | S | +| main.rs:454:18:454:18 | S | | main.rs:383:5:384:13 | S | +| main.rs:456:13:456:13 | y | | main.rs:389:5:390:14 | AT | +| main.rs:456:17:456:18 | x2 | | main.rs:383:5:384:13 | S | +| main.rs:456:17:456:23 | x2.m2() | | main.rs:389:5:390:14 | AT | +| main.rs:457:26:457:26 | y | | main.rs:389:5:390:14 | AT | +| main.rs:459:13:459:14 | x3 | | main.rs:383:5:384:13 | S | +| main.rs:459:18:459:18 | S | | main.rs:383:5:384:13 | S | +| main.rs:461:26:461:27 | x3 | | main.rs:383:5:384:13 | S | +| main.rs:461:26:461:34 | x3.put(...) | | main.rs:332:5:335:5 | Wrapper | +| main.rs:464:26:464:27 | x3 | | main.rs:383:5:384:13 | S | +| main.rs:466:20:466:20 | S | | main.rs:383:5:384:13 | S | +| main.rs:469:13:469:14 | x5 | | main.rs:386:5:387:14 | S2 | +| main.rs:469:18:469:19 | S2 | | main.rs:386:5:387:14 | S2 | +| main.rs:470:26:470:27 | x5 | | main.rs:386:5:387:14 | S2 | +| main.rs:470:26:470:32 | x5.m1() | | main.rs:332:5:335:5 | Wrapper | +| main.rs:470:26:470:32 | x5.m1() | A | main.rs:386:5:387:14 | S2 | +| main.rs:471:13:471:14 | x6 | | main.rs:386:5:387:14 | S2 | +| main.rs:471:18:471:19 | S2 | | main.rs:386:5:387:14 | S2 | +| main.rs:472:26:472:27 | x6 | | main.rs:386:5:387:14 | S2 | +| main.rs:472:26:472:32 | x6.m2() | | main.rs:332:5:335:5 | Wrapper | +| main.rs:472:26:472:32 | x6.m2() | A | main.rs:386:5:387:14 | S2 | +| main.rs:474:13:474:22 | assoc_zero | | main.rs:389:5:390:14 | AT | +| main.rs:474:26:474:27 | AT | | main.rs:389:5:390:14 | AT | +| main.rs:474:26:474:38 | AT.get_zero() | | main.rs:389:5:390:14 | AT | +| main.rs:475:13:475:21 | assoc_one | | main.rs:383:5:384:13 | S | +| main.rs:475:25:475:26 | AT | | main.rs:389:5:390:14 | AT | +| main.rs:475:25:475:36 | AT.get_one() | | main.rs:383:5:384:13 | S | +| main.rs:476:13:476:21 | assoc_two | | main.rs:386:5:387:14 | S2 | +| main.rs:476:25:476:26 | AT | | main.rs:389:5:390:14 | AT | +| main.rs:476:25:476:36 | AT.get_two() | | main.rs:386:5:387:14 | S2 | +| main.rs:493:15:493:18 | SelfParam | | main.rs:481:5:485:5 | MyEnum | +| main.rs:493:15:493:18 | SelfParam | A | main.rs:492:10:492:10 | T | +| main.rs:493:26:498:9 | { ... } | | main.rs:492:10:492:10 | T | +| main.rs:494:13:497:13 | match self { ... } | | main.rs:492:10:492:10 | T | +| main.rs:494:19:494:22 | self | | main.rs:481:5:485:5 | MyEnum | +| main.rs:494:19:494:22 | self | A | main.rs:492:10:492:10 | T | +| main.rs:495:28:495:28 | a | | main.rs:492:10:492:10 | T | +| main.rs:495:34:495:34 | a | | main.rs:492:10:492:10 | T | +| main.rs:496:30:496:30 | a | | main.rs:492:10:492:10 | T | +| main.rs:496:37:496:37 | a | | main.rs:492:10:492:10 | T | +| main.rs:502:13:502:13 | x | | main.rs:481:5:485:5 | MyEnum | +| main.rs:502:13:502:13 | x | A | main.rs:487:5:488:14 | S1 | +| main.rs:502:17:502:30 | ...::C1(...) | | main.rs:481:5:485:5 | MyEnum | +| main.rs:502:17:502:30 | ...::C1(...) | A | main.rs:487:5:488:14 | S1 | +| main.rs:502:28:502:29 | S1 | | main.rs:487:5:488:14 | S1 | +| main.rs:503:13:503:13 | y | | main.rs:481:5:485:5 | MyEnum | +| main.rs:503:13:503:13 | y | A | main.rs:489:5:490:14 | S2 | +| main.rs:503:17:503:36 | ...::C2 {...} | | main.rs:481:5:485:5 | MyEnum | +| main.rs:503:17:503:36 | ...::C2 {...} | A | main.rs:489:5:490:14 | S2 | +| main.rs:503:33:503:34 | S2 | | main.rs:489:5:490:14 | S2 | +| main.rs:505:26:505:26 | x | | main.rs:481:5:485:5 | MyEnum | +| main.rs:505:26:505:26 | x | A | main.rs:487:5:488:14 | S1 | +| main.rs:505:26:505:31 | x.m1() | | main.rs:487:5:488:14 | S1 | +| main.rs:506:26:506:26 | y | | main.rs:481:5:485:5 | MyEnum | +| main.rs:506:26:506:26 | y | A | main.rs:489:5:490:14 | S2 | +| main.rs:506:26:506:31 | y.m1() | | main.rs:489:5:490:14 | S2 | +| main.rs:528:15:528:18 | SelfParam | | main.rs:526:5:529:5 | Self [trait MyTrait1] | +| main.rs:532:15:532:18 | SelfParam | | main.rs:531:5:542:5 | Self [trait MyTrait2] | +| main.rs:535:9:541:9 | { ... } | | main.rs:531:20:531:22 | Tr2 | +| main.rs:536:13:540:13 | if ... {...} else {...} | | main.rs:531:20:531:22 | Tr2 | +| main.rs:536:26:538:13 | { ... } | | main.rs:531:20:531:22 | Tr2 | +| main.rs:537:17:537:20 | self | | main.rs:531:5:542:5 | Self [trait MyTrait2] | +| main.rs:537:17:537:25 | self.m1() | | main.rs:531:20:531:22 | Tr2 | +| main.rs:538:20:540:13 | { ... } | | main.rs:531:20:531:22 | Tr2 | +| main.rs:539:17:539:30 | ...::m1(...) | | main.rs:531:20:531:22 | Tr2 | +| main.rs:539:26:539:29 | self | | main.rs:531:5:542:5 | Self [trait MyTrait2] | +| main.rs:545:15:545:18 | SelfParam | | main.rs:544:5:555:5 | Self [trait MyTrait3] | +| main.rs:548:9:554:9 | { ... } | | main.rs:544:20:544:22 | Tr3 | +| main.rs:549:13:553:13 | if ... {...} else {...} | | main.rs:544:20:544:22 | Tr3 | +| main.rs:549:26:551:13 | { ... } | | main.rs:544:20:544:22 | Tr3 | +| main.rs:550:17:550:20 | self | | main.rs:544:5:555:5 | Self [trait MyTrait3] | +| main.rs:550:17:550:25 | self.m2() | | main.rs:511:5:514:5 | MyThing | +| main.rs:550:17:550:25 | self.m2() | A | main.rs:544:20:544:22 | Tr3 | +| main.rs:550:17:550:27 | ... .a | | main.rs:544:20:544:22 | Tr3 | +| main.rs:551:20:553:13 | { ... } | | main.rs:544:20:544:22 | Tr3 | +| main.rs:552:17:552:30 | ...::m2(...) | | main.rs:511:5:514:5 | MyThing | +| main.rs:552:17:552:30 | ...::m2(...) | A | main.rs:544:20:544:22 | Tr3 | +| main.rs:552:17:552:32 | ... .a | | main.rs:544:20:544:22 | Tr3 | +| main.rs:552:26:552:29 | self | | main.rs:544:5:555:5 | Self [trait MyTrait3] | +| main.rs:559:15:559:18 | SelfParam | | main.rs:511:5:514:5 | MyThing | +| main.rs:559:15:559:18 | SelfParam | A | main.rs:557:10:557:10 | T | +| main.rs:559:26:561:9 | { ... } | | main.rs:557:10:557:10 | T | +| main.rs:560:13:560:16 | self | | main.rs:511:5:514:5 | MyThing | +| main.rs:560:13:560:16 | self | A | main.rs:557:10:557:10 | T | +| main.rs:560:13:560:18 | self.a | | main.rs:557:10:557:10 | T | +| main.rs:568:15:568:18 | SelfParam | | main.rs:516:5:519:5 | MyThing2 | +| main.rs:568:15:568:18 | SelfParam | A | main.rs:566:10:566:10 | T | +| main.rs:568:35:570:9 | { ... } | | main.rs:511:5:514:5 | MyThing | +| main.rs:568:35:570:9 | { ... } | A | main.rs:566:10:566:10 | T | +| main.rs:569:13:569:33 | MyThing {...} | | main.rs:511:5:514:5 | MyThing | +| main.rs:569:13:569:33 | MyThing {...} | A | main.rs:566:10:566:10 | T | +| main.rs:569:26:569:29 | self | | main.rs:516:5:519:5 | MyThing2 | +| main.rs:569:26:569:29 | self | A | main.rs:566:10:566:10 | T | +| main.rs:569:26:569:31 | self.a | | main.rs:566:10:566:10 | T | +| main.rs:578:13:578:13 | x | | main.rs:511:5:514:5 | MyThing | +| main.rs:578:13:578:13 | x | A | main.rs:521:5:522:14 | S1 | +| main.rs:578:17:578:33 | MyThing {...} | | main.rs:511:5:514:5 | MyThing | +| main.rs:578:17:578:33 | MyThing {...} | A | main.rs:521:5:522:14 | S1 | +| main.rs:578:30:578:31 | S1 | | main.rs:521:5:522:14 | S1 | +| main.rs:579:13:579:13 | y | | main.rs:511:5:514:5 | MyThing | +| main.rs:579:13:579:13 | y | A | main.rs:523:5:524:14 | S2 | +| main.rs:579:17:579:33 | MyThing {...} | | main.rs:511:5:514:5 | MyThing | +| main.rs:579:17:579:33 | MyThing {...} | A | main.rs:523:5:524:14 | S2 | +| main.rs:579:30:579:31 | S2 | | main.rs:523:5:524:14 | S2 | +| main.rs:581:26:581:26 | x | | main.rs:511:5:514:5 | MyThing | +| main.rs:581:26:581:26 | x | A | main.rs:521:5:522:14 | S1 | +| main.rs:581:26:581:31 | x.m1() | | main.rs:521:5:522:14 | S1 | +| main.rs:582:26:582:26 | y | | main.rs:511:5:514:5 | MyThing | +| main.rs:582:26:582:26 | y | A | main.rs:523:5:524:14 | S2 | +| main.rs:582:26:582:31 | y.m1() | | main.rs:523:5:524:14 | S2 | +| main.rs:584:13:584:13 | x | | main.rs:511:5:514:5 | MyThing | +| main.rs:584:13:584:13 | x | A | main.rs:521:5:522:14 | S1 | +| main.rs:584:17:584:33 | MyThing {...} | | main.rs:511:5:514:5 | MyThing | +| main.rs:584:17:584:33 | MyThing {...} | A | main.rs:521:5:522:14 | S1 | +| main.rs:584:30:584:31 | S1 | | main.rs:521:5:522:14 | S1 | +| main.rs:585:13:585:13 | y | | main.rs:511:5:514:5 | MyThing | +| main.rs:585:13:585:13 | y | A | main.rs:523:5:524:14 | S2 | +| main.rs:585:17:585:33 | MyThing {...} | | main.rs:511:5:514:5 | MyThing | +| main.rs:585:17:585:33 | MyThing {...} | A | main.rs:523:5:524:14 | S2 | +| main.rs:585:30:585:31 | S2 | | main.rs:523:5:524:14 | S2 | +| main.rs:587:26:587:26 | x | | main.rs:511:5:514:5 | MyThing | +| main.rs:587:26:587:26 | x | A | main.rs:521:5:522:14 | S1 | +| main.rs:587:26:587:31 | x.m2() | | main.rs:521:5:522:14 | S1 | +| main.rs:588:26:588:26 | y | | main.rs:511:5:514:5 | MyThing | +| main.rs:588:26:588:26 | y | A | main.rs:523:5:524:14 | S2 | +| main.rs:588:26:588:31 | y.m2() | | main.rs:523:5:524:14 | S2 | +| main.rs:590:13:590:13 | x | | main.rs:516:5:519:5 | MyThing2 | +| main.rs:590:13:590:13 | x | A | main.rs:521:5:522:14 | S1 | +| main.rs:590:17:590:34 | MyThing2 {...} | | main.rs:516:5:519:5 | MyThing2 | +| main.rs:590:17:590:34 | MyThing2 {...} | A | main.rs:521:5:522:14 | S1 | +| main.rs:590:31:590:32 | S1 | | main.rs:521:5:522:14 | S1 | +| main.rs:591:13:591:13 | y | | main.rs:516:5:519:5 | MyThing2 | +| main.rs:591:13:591:13 | y | A | main.rs:523:5:524:14 | S2 | +| main.rs:591:17:591:34 | MyThing2 {...} | | main.rs:516:5:519:5 | MyThing2 | +| main.rs:591:17:591:34 | MyThing2 {...} | A | main.rs:523:5:524:14 | S2 | +| main.rs:591:31:591:32 | S2 | | main.rs:523:5:524:14 | S2 | +| main.rs:593:26:593:26 | x | | main.rs:516:5:519:5 | MyThing2 | +| main.rs:593:26:593:26 | x | A | main.rs:521:5:522:14 | S1 | +| main.rs:593:26:593:31 | x.m3() | | main.rs:521:5:522:14 | S1 | +| main.rs:594:26:594:26 | y | | main.rs:516:5:519:5 | MyThing2 | +| main.rs:594:26:594:26 | y | A | main.rs:523:5:524:14 | S2 | +| main.rs:594:26:594:31 | y.m3() | | main.rs:523:5:524:14 | S2 | +| main.rs:612:22:612:22 | x | | file://:0:0:0:0 | & | +| main.rs:612:22:612:22 | x | &T | main.rs:612:11:612:19 | T | +| main.rs:612:35:614:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:612:35:614:5 | { ... } | &T | main.rs:612:11:612:19 | T | +| main.rs:613:9:613:9 | x | | file://:0:0:0:0 | & | +| main.rs:613:9:613:9 | x | &T | main.rs:612:11:612:19 | T | +| main.rs:617:17:617:20 | SelfParam | | main.rs:602:5:603:14 | S1 | +| main.rs:617:29:619:9 | { ... } | | main.rs:605:5:606:14 | S2 | +| main.rs:618:13:618:14 | S2 | | main.rs:605:5:606:14 | S2 | +| main.rs:622:21:622:21 | x | | main.rs:622:13:622:14 | T1 | +| main.rs:625:5:627:5 | { ... } | | main.rs:622:17:622:18 | T2 | +| main.rs:626:9:626:9 | x | | main.rs:622:13:622:14 | T1 | +| main.rs:626:9:626:16 | x.into() | | main.rs:622:17:622:18 | T2 | +| main.rs:630:13:630:13 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:630:17:630:18 | S1 | | main.rs:602:5:603:14 | S1 | +| main.rs:631:26:631:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:631:26:631:31 | id(...) | &T | main.rs:602:5:603:14 | S1 | +| main.rs:631:29:631:30 | &x | | file://:0:0:0:0 | & | +| main.rs:631:29:631:30 | &x | &T | main.rs:602:5:603:14 | S1 | +| main.rs:631:30:631:30 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:633:13:633:13 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:633:17:633:18 | S1 | | main.rs:602:5:603:14 | S1 | +| main.rs:634:26:634:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:634:26:634:37 | id::<...>(...) | &T | main.rs:602:5:603:14 | S1 | +| main.rs:634:35:634:36 | &x | | file://:0:0:0:0 | & | +| main.rs:634:35:634:36 | &x | &T | main.rs:602:5:603:14 | S1 | +| main.rs:634:36:634:36 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:636:13:636:13 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:636:17:636:18 | S1 | | main.rs:602:5:603:14 | S1 | +| main.rs:637:26:637:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:637:26:637:44 | id::<...>(...) | &T | main.rs:602:5:603:14 | S1 | +| main.rs:637:42:637:43 | &x | | file://:0:0:0:0 | & | +| main.rs:637:42:637:43 | &x | &T | main.rs:602:5:603:14 | S1 | +| main.rs:637:43:637:43 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:639:13:639:13 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:639:17:639:18 | S1 | | main.rs:602:5:603:14 | S1 | +| main.rs:640:9:640:25 | into::<...>(...) | | main.rs:605:5:606:14 | S2 | +| main.rs:640:24:640:24 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:642:13:642:13 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:642:17:642:18 | S1 | | main.rs:602:5:603:14 | S1 | +| main.rs:643:13:643:13 | y | | main.rs:605:5:606:14 | S2 | +| main.rs:643:21:643:27 | into(...) | | main.rs:605:5:606:14 | S2 | +| main.rs:643:26:643:26 | x | | main.rs:602:5:603:14 | S1 | +| main.rs:657:22:657:25 | SelfParam | | main.rs:648:5:654:5 | PairOption | +| main.rs:657:22:657:25 | SelfParam | Fst | main.rs:656:10:656:12 | Fst | +| main.rs:657:22:657:25 | SelfParam | Snd | main.rs:656:15:656:17 | Snd | +| main.rs:657:35:664:9 | { ... } | | main.rs:656:15:656:17 | Snd | +| main.rs:658:13:663:13 | match self { ... } | | main.rs:656:15:656:17 | Snd | +| main.rs:658:19:658:22 | self | | main.rs:648:5:654:5 | PairOption | +| main.rs:658:19:658:22 | self | Fst | main.rs:656:10:656:12 | Fst | +| main.rs:658:19:658:22 | self | Snd | main.rs:656:15:656:17 | Snd | +| main.rs:659:43:659:82 | MacroExpr | | main.rs:656:15:656:17 | Snd | +| main.rs:660:43:660:81 | MacroExpr | | main.rs:656:15:656:17 | Snd | +| main.rs:661:37:661:39 | snd | | main.rs:656:15:656:17 | Snd | +| main.rs:661:45:661:47 | snd | | main.rs:656:15:656:17 | Snd | +| main.rs:662:41:662:43 | snd | | main.rs:656:15:656:17 | Snd | +| main.rs:662:49:662:51 | snd | | main.rs:656:15:656:17 | Snd | +| main.rs:688:10:688:10 | t | | main.rs:648:5:654:5 | PairOption | +| main.rs:688:10:688:10 | t | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:688:10:688:10 | t | Snd | main.rs:648:5:654:5 | PairOption | +| main.rs:688:10:688:10 | t | Snd.Fst | main.rs:670:5:671:14 | S2 | +| main.rs:688:10:688:10 | t | Snd.Snd | main.rs:673:5:674:14 | S3 | +| main.rs:689:13:689:13 | x | | main.rs:673:5:674:14 | S3 | +| main.rs:689:17:689:17 | t | | main.rs:648:5:654:5 | PairOption | +| main.rs:689:17:689:17 | t | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:689:17:689:17 | t | Snd | main.rs:648:5:654:5 | PairOption | +| main.rs:689:17:689:17 | t | Snd.Fst | main.rs:670:5:671:14 | S2 | +| main.rs:689:17:689:17 | t | Snd.Snd | main.rs:673:5:674:14 | S3 | +| main.rs:689:17:689:29 | t.unwrapSnd() | | main.rs:648:5:654:5 | PairOption | +| main.rs:689:17:689:29 | t.unwrapSnd() | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:689:17:689:29 | t.unwrapSnd() | Snd | main.rs:673:5:674:14 | S3 | +| main.rs:689:17:689:41 | ... .unwrapSnd() | | main.rs:673:5:674:14 | S3 | +| main.rs:690:26:690:26 | x | | main.rs:673:5:674:14 | S3 | +| main.rs:695:13:695:14 | p1 | | main.rs:648:5:654:5 | PairOption | +| main.rs:695:13:695:14 | p1 | Fst | main.rs:667:5:668:14 | S1 | +| main.rs:695:13:695:14 | p1 | Snd | main.rs:670:5:671:14 | S2 | +| main.rs:695:26:695:53 | ...::PairBoth(...) | | main.rs:648:5:654:5 | PairOption | +| main.rs:695:26:695:53 | ...::PairBoth(...) | Fst | main.rs:667:5:668:14 | S1 | +| main.rs:695:26:695:53 | ...::PairBoth(...) | Snd | main.rs:670:5:671:14 | S2 | +| main.rs:695:47:695:48 | S1 | | main.rs:667:5:668:14 | S1 | +| main.rs:695:51:695:52 | S2 | | main.rs:670:5:671:14 | S2 | +| main.rs:696:26:696:27 | p1 | | main.rs:648:5:654:5 | PairOption | +| main.rs:696:26:696:27 | p1 | Fst | main.rs:667:5:668:14 | S1 | +| main.rs:696:26:696:27 | p1 | Snd | main.rs:670:5:671:14 | S2 | +| main.rs:699:13:699:14 | p2 | | main.rs:648:5:654:5 | PairOption | +| main.rs:699:13:699:14 | p2 | Fst | main.rs:667:5:668:14 | S1 | +| main.rs:699:13:699:14 | p2 | Snd | main.rs:670:5:671:14 | S2 | +| main.rs:699:26:699:47 | ...::PairNone(...) | | main.rs:648:5:654:5 | PairOption | +| main.rs:699:26:699:47 | ...::PairNone(...) | Fst | main.rs:667:5:668:14 | S1 | +| main.rs:699:26:699:47 | ...::PairNone(...) | Snd | main.rs:670:5:671:14 | S2 | +| main.rs:700:26:700:27 | p2 | | main.rs:648:5:654:5 | PairOption | +| main.rs:700:26:700:27 | p2 | Fst | main.rs:667:5:668:14 | S1 | +| main.rs:700:26:700:27 | p2 | Snd | main.rs:670:5:671:14 | S2 | +| main.rs:703:13:703:14 | p3 | | main.rs:648:5:654:5 | PairOption | +| main.rs:703:13:703:14 | p3 | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:703:13:703:14 | p3 | Snd | main.rs:673:5:674:14 | S3 | +| main.rs:703:34:703:56 | ...::PairSnd(...) | | main.rs:648:5:654:5 | PairOption | +| main.rs:703:34:703:56 | ...::PairSnd(...) | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:703:34:703:56 | ...::PairSnd(...) | Snd | main.rs:673:5:674:14 | S3 | +| main.rs:703:54:703:55 | S3 | | main.rs:673:5:674:14 | S3 | +| main.rs:704:26:704:27 | p3 | | main.rs:648:5:654:5 | PairOption | +| main.rs:704:26:704:27 | p3 | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:704:26:704:27 | p3 | Snd | main.rs:673:5:674:14 | S3 | +| main.rs:707:13:707:14 | p3 | | main.rs:648:5:654:5 | PairOption | +| main.rs:707:13:707:14 | p3 | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:707:13:707:14 | p3 | Snd | main.rs:673:5:674:14 | S3 | +| main.rs:707:35:707:56 | ...::PairNone(...) | | main.rs:648:5:654:5 | PairOption | +| main.rs:707:35:707:56 | ...::PairNone(...) | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:707:35:707:56 | ...::PairNone(...) | Snd | main.rs:673:5:674:14 | S3 | +| main.rs:708:26:708:27 | p3 | | main.rs:648:5:654:5 | PairOption | +| main.rs:708:26:708:27 | p3 | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:708:26:708:27 | p3 | Snd | main.rs:673:5:674:14 | S3 | +| main.rs:710:11:710:54 | ...::PairSnd(...) | | main.rs:648:5:654:5 | PairOption | +| main.rs:710:11:710:54 | ...::PairSnd(...) | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:710:11:710:54 | ...::PairSnd(...) | Snd | main.rs:648:5:654:5 | PairOption | +| main.rs:710:11:710:54 | ...::PairSnd(...) | Snd.Fst | main.rs:670:5:671:14 | S2 | +| main.rs:710:11:710:54 | ...::PairSnd(...) | Snd.Snd | main.rs:673:5:674:14 | S3 | +| main.rs:710:31:710:53 | ...::PairSnd(...) | | main.rs:648:5:654:5 | PairOption | +| main.rs:710:31:710:53 | ...::PairSnd(...) | Fst | main.rs:670:5:671:14 | S2 | +| main.rs:710:31:710:53 | ...::PairSnd(...) | Snd | main.rs:673:5:674:14 | S3 | +| main.rs:710:51:710:52 | S3 | | main.rs:673:5:674:14 | S3 | +| main.rs:723:16:723:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:723:16:723:24 | SelfParam | &T | main.rs:721:5:728:5 | Self [trait MyTrait] | +| main.rs:723:27:723:31 | value | | main.rs:721:19:721:19 | S | +| main.rs:725:21:725:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:725:21:725:29 | SelfParam | &T | main.rs:721:5:728:5 | Self [trait MyTrait] | +| main.rs:725:32:725:36 | value | | main.rs:721:19:721:19 | S | +| main.rs:726:13:726:16 | self | | file://:0:0:0:0 | & | +| main.rs:726:13:726:16 | self | &T | main.rs:721:5:728:5 | Self [trait MyTrait] | +| main.rs:726:22:726:26 | value | | main.rs:721:19:721:19 | S | +| main.rs:732:16:732:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:732:16:732:24 | SelfParam | &T | main.rs:715:5:719:5 | MyOption | +| main.rs:732:16:732:24 | SelfParam | &T.T | main.rs:730:10:730:10 | T | +| main.rs:732:27:732:31 | value | | main.rs:730:10:730:10 | T | +| main.rs:736:26:738:9 | { ... } | | main.rs:715:5:719:5 | MyOption | +| main.rs:736:26:738:9 | { ... } | T | main.rs:735:10:735:10 | T | +| main.rs:737:13:737:30 | ...::MyNone(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:737:13:737:30 | ...::MyNone(...) | T | main.rs:735:10:735:10 | T | +| main.rs:742:20:742:23 | SelfParam | | main.rs:715:5:719:5 | MyOption | +| main.rs:742:20:742:23 | SelfParam | T | main.rs:715:5:719:5 | MyOption | +| main.rs:742:20:742:23 | SelfParam | T.T | main.rs:741:10:741:10 | T | +| main.rs:742:41:747:9 | { ... } | | main.rs:715:5:719:5 | MyOption | +| main.rs:742:41:747:9 | { ... } | T | main.rs:741:10:741:10 | T | +| main.rs:743:13:746:13 | match self { ... } | | main.rs:715:5:719:5 | MyOption | +| main.rs:743:13:746:13 | match self { ... } | T | main.rs:741:10:741:10 | T | +| main.rs:743:19:743:22 | self | | main.rs:715:5:719:5 | MyOption | +| main.rs:743:19:743:22 | self | T | main.rs:715:5:719:5 | MyOption | +| main.rs:743:19:743:22 | self | T.T | main.rs:741:10:741:10 | T | +| main.rs:744:39:744:56 | ...::MyNone(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:744:39:744:56 | ...::MyNone(...) | T | main.rs:741:10:741:10 | T | +| main.rs:745:34:745:34 | x | | main.rs:715:5:719:5 | MyOption | +| main.rs:745:34:745:34 | x | T | main.rs:741:10:741:10 | T | +| main.rs:745:40:745:40 | x | | main.rs:715:5:719:5 | MyOption | +| main.rs:745:40:745:40 | x | T | main.rs:741:10:741:10 | T | +| main.rs:754:13:754:14 | x1 | | main.rs:715:5:719:5 | MyOption | +| main.rs:754:18:754:37 | ...::new(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:755:26:755:27 | x1 | | main.rs:715:5:719:5 | MyOption | +| main.rs:757:13:757:18 | mut x2 | | main.rs:715:5:719:5 | MyOption | +| main.rs:757:13:757:18 | mut x2 | T | main.rs:750:5:751:13 | S | +| main.rs:757:22:757:36 | ...::new(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:757:22:757:36 | ...::new(...) | T | main.rs:750:5:751:13 | S | +| main.rs:758:9:758:10 | x2 | | main.rs:715:5:719:5 | MyOption | +| main.rs:758:9:758:10 | x2 | T | main.rs:750:5:751:13 | S | +| main.rs:758:16:758:16 | S | | main.rs:750:5:751:13 | S | +| main.rs:759:26:759:27 | x2 | | main.rs:715:5:719:5 | MyOption | +| main.rs:759:26:759:27 | x2 | T | main.rs:750:5:751:13 | S | +| main.rs:761:13:761:18 | mut x3 | | main.rs:715:5:719:5 | MyOption | +| main.rs:761:22:761:36 | ...::new(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:762:9:762:10 | x3 | | main.rs:715:5:719:5 | MyOption | +| main.rs:762:21:762:21 | S | | main.rs:750:5:751:13 | S | +| main.rs:763:26:763:27 | x3 | | main.rs:715:5:719:5 | MyOption | +| main.rs:765:13:765:18 | mut x4 | | main.rs:715:5:719:5 | MyOption | +| main.rs:765:13:765:18 | mut x4 | T | main.rs:750:5:751:13 | S | +| main.rs:765:22:765:36 | ...::new(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:765:22:765:36 | ...::new(...) | T | main.rs:750:5:751:13 | S | +| main.rs:766:23:766:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:766:23:766:29 | &mut x4 | &T | main.rs:715:5:719:5 | MyOption | +| main.rs:766:23:766:29 | &mut x4 | &T.T | main.rs:750:5:751:13 | S | +| main.rs:766:28:766:29 | x4 | | main.rs:715:5:719:5 | MyOption | +| main.rs:766:28:766:29 | x4 | T | main.rs:750:5:751:13 | S | +| main.rs:766:32:766:32 | S | | main.rs:750:5:751:13 | S | +| main.rs:767:26:767:27 | x4 | | main.rs:715:5:719:5 | MyOption | +| main.rs:767:26:767:27 | x4 | T | main.rs:750:5:751:13 | S | +| main.rs:769:13:769:14 | x5 | | main.rs:715:5:719:5 | MyOption | +| main.rs:769:13:769:14 | x5 | T | main.rs:715:5:719:5 | MyOption | +| main.rs:769:13:769:14 | x5 | T.T | main.rs:750:5:751:13 | S | +| main.rs:769:18:769:58 | ...::MySome(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:769:18:769:58 | ...::MySome(...) | T | main.rs:715:5:719:5 | MyOption | +| main.rs:769:18:769:58 | ...::MySome(...) | T.T | main.rs:750:5:751:13 | S | +| main.rs:769:35:769:57 | ...::MyNone(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:769:35:769:57 | ...::MyNone(...) | T | main.rs:750:5:751:13 | S | +| main.rs:770:26:770:27 | x5 | | main.rs:715:5:719:5 | MyOption | +| main.rs:770:26:770:27 | x5 | T | main.rs:715:5:719:5 | MyOption | +| main.rs:770:26:770:27 | x5 | T.T | main.rs:750:5:751:13 | S | +| main.rs:772:13:772:14 | x6 | | main.rs:715:5:719:5 | MyOption | +| main.rs:772:13:772:14 | x6 | T | main.rs:715:5:719:5 | MyOption | +| main.rs:772:13:772:14 | x6 | T.T | main.rs:750:5:751:13 | S | +| main.rs:772:18:772:58 | ...::MySome(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:772:18:772:58 | ...::MySome(...) | T | main.rs:715:5:719:5 | MyOption | +| main.rs:772:18:772:58 | ...::MySome(...) | T.T | main.rs:750:5:751:13 | S | +| main.rs:772:35:772:57 | ...::MyNone(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:772:35:772:57 | ...::MyNone(...) | T | main.rs:750:5:751:13 | S | +| main.rs:773:26:773:61 | ...::flatten(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:773:26:773:61 | ...::flatten(...) | T | main.rs:750:5:751:13 | S | +| main.rs:773:59:773:60 | x6 | | main.rs:715:5:719:5 | MyOption | +| main.rs:773:59:773:60 | x6 | T | main.rs:715:5:719:5 | MyOption | +| main.rs:773:59:773:60 | x6 | T.T | main.rs:750:5:751:13 | S | +| main.rs:775:13:775:19 | from_if | | main.rs:715:5:719:5 | MyOption | +| main.rs:775:13:775:19 | from_if | T | main.rs:750:5:751:13 | S | +| main.rs:775:23:779:9 | if ... {...} else {...} | | main.rs:715:5:719:5 | MyOption | +| main.rs:775:23:779:9 | if ... {...} else {...} | T | main.rs:750:5:751:13 | S | +| main.rs:775:36:777:9 | { ... } | | main.rs:715:5:719:5 | MyOption | +| main.rs:775:36:777:9 | { ... } | T | main.rs:750:5:751:13 | S | +| main.rs:776:13:776:30 | ...::MyNone(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:776:13:776:30 | ...::MyNone(...) | T | main.rs:750:5:751:13 | S | +| main.rs:777:16:779:9 | { ... } | | main.rs:715:5:719:5 | MyOption | +| main.rs:777:16:779:9 | { ... } | T | main.rs:750:5:751:13 | S | +| main.rs:778:13:778:31 | ...::MySome(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:778:13:778:31 | ...::MySome(...) | T | main.rs:750:5:751:13 | S | +| main.rs:778:30:778:30 | S | | main.rs:750:5:751:13 | S | +| main.rs:780:26:780:32 | from_if | | main.rs:715:5:719:5 | MyOption | +| main.rs:780:26:780:32 | from_if | T | main.rs:750:5:751:13 | S | +| main.rs:782:13:782:22 | from_match | | main.rs:715:5:719:5 | MyOption | +| main.rs:782:13:782:22 | from_match | T | main.rs:750:5:751:13 | S | +| main.rs:782:26:785:9 | match ... { ... } | | main.rs:715:5:719:5 | MyOption | +| main.rs:782:26:785:9 | match ... { ... } | T | main.rs:750:5:751:13 | S | +| main.rs:783:21:783:38 | ...::MyNone(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:783:21:783:38 | ...::MyNone(...) | T | main.rs:750:5:751:13 | S | +| main.rs:784:22:784:40 | ...::MySome(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:784:22:784:40 | ...::MySome(...) | T | main.rs:750:5:751:13 | S | +| main.rs:784:39:784:39 | S | | main.rs:750:5:751:13 | S | +| main.rs:786:26:786:35 | from_match | | main.rs:715:5:719:5 | MyOption | +| main.rs:786:26:786:35 | from_match | T | main.rs:750:5:751:13 | S | +| main.rs:788:13:788:21 | from_loop | | main.rs:715:5:719:5 | MyOption | +| main.rs:788:13:788:21 | from_loop | T | main.rs:750:5:751:13 | S | +| main.rs:788:25:793:9 | loop { ... } | | main.rs:715:5:719:5 | MyOption | +| main.rs:788:25:793:9 | loop { ... } | T | main.rs:750:5:751:13 | S | +| main.rs:790:23:790:40 | ...::MyNone(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:790:23:790:40 | ...::MyNone(...) | T | main.rs:750:5:751:13 | S | +| main.rs:792:19:792:37 | ...::MySome(...) | | main.rs:715:5:719:5 | MyOption | +| main.rs:792:19:792:37 | ...::MySome(...) | T | main.rs:750:5:751:13 | S | +| main.rs:792:36:792:36 | S | | main.rs:750:5:751:13 | S | +| main.rs:794:26:794:34 | from_loop | | main.rs:715:5:719:5 | MyOption | +| main.rs:794:26:794:34 | from_loop | T | main.rs:750:5:751:13 | S | +| main.rs:807:15:807:18 | SelfParam | | main.rs:800:5:801:19 | S | +| main.rs:807:15:807:18 | SelfParam | T | main.rs:806:10:806:10 | T | +| main.rs:807:26:809:9 | { ... } | | main.rs:806:10:806:10 | T | +| main.rs:808:13:808:16 | self | | main.rs:800:5:801:19 | S | +| main.rs:808:13:808:16 | self | T | main.rs:806:10:806:10 | T | +| main.rs:808:13:808:18 | self.0 | | main.rs:806:10:806:10 | T | +| main.rs:811:15:811:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:811:15:811:19 | SelfParam | &T | main.rs:800:5:801:19 | S | +| main.rs:811:15:811:19 | SelfParam | &T.T | main.rs:806:10:806:10 | T | +| main.rs:811:28:813:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:811:28:813:9 | { ... } | &T | main.rs:806:10:806:10 | T | +| main.rs:812:13:812:19 | &... | | file://:0:0:0:0 | & | +| main.rs:812:13:812:19 | &... | &T | main.rs:806:10:806:10 | T | +| main.rs:812:14:812:17 | self | | file://:0:0:0:0 | & | +| main.rs:812:14:812:17 | self | &T | main.rs:800:5:801:19 | S | +| main.rs:812:14:812:17 | self | &T.T | main.rs:806:10:806:10 | T | +| main.rs:812:14:812:19 | self.0 | | main.rs:806:10:806:10 | T | +| main.rs:815:15:815:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:815:15:815:25 | SelfParam | &T | main.rs:800:5:801:19 | S | +| main.rs:815:15:815:25 | SelfParam | &T.T | main.rs:806:10:806:10 | T | +| main.rs:815:34:817:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:815:34:817:9 | { ... } | &T | main.rs:806:10:806:10 | T | +| main.rs:816:13:816:19 | &... | | file://:0:0:0:0 | & | +| main.rs:816:13:816:19 | &... | &T | main.rs:806:10:806:10 | T | +| main.rs:816:14:816:17 | self | | file://:0:0:0:0 | & | +| main.rs:816:14:816:17 | self | &T | main.rs:800:5:801:19 | S | +| main.rs:816:14:816:17 | self | &T.T | main.rs:806:10:806:10 | T | +| main.rs:816:14:816:19 | self.0 | | main.rs:806:10:806:10 | T | +| main.rs:821:13:821:14 | x1 | | main.rs:800:5:801:19 | S | +| main.rs:821:13:821:14 | x1 | T | main.rs:803:5:804:14 | S2 | +| main.rs:821:18:821:22 | S(...) | | main.rs:800:5:801:19 | S | +| main.rs:821:18:821:22 | S(...) | T | main.rs:803:5:804:14 | S2 | +| main.rs:821:20:821:21 | S2 | | main.rs:803:5:804:14 | S2 | +| main.rs:822:26:822:27 | x1 | | main.rs:800:5:801:19 | S | +| main.rs:822:26:822:27 | x1 | T | main.rs:803:5:804:14 | S2 | +| main.rs:822:26:822:32 | x1.m1() | | main.rs:803:5:804:14 | S2 | +| main.rs:824:13:824:14 | x2 | | main.rs:800:5:801:19 | S | +| main.rs:824:13:824:14 | x2 | T | main.rs:803:5:804:14 | S2 | +| main.rs:824:18:824:22 | S(...) | | main.rs:800:5:801:19 | S | +| main.rs:824:18:824:22 | S(...) | T | main.rs:803:5:804:14 | S2 | +| main.rs:824:20:824:21 | S2 | | main.rs:803:5:804:14 | S2 | +| main.rs:826:26:826:27 | x2 | | main.rs:800:5:801:19 | S | +| main.rs:826:26:826:27 | x2 | T | main.rs:803:5:804:14 | S2 | +| main.rs:826:26:826:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:826:26:826:32 | x2.m2() | &T | main.rs:803:5:804:14 | S2 | +| main.rs:827:26:827:27 | x2 | | main.rs:800:5:801:19 | S | +| main.rs:827:26:827:27 | x2 | T | main.rs:803:5:804:14 | S2 | +| main.rs:827:26:827:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:827:26:827:32 | x2.m3() | &T | main.rs:803:5:804:14 | S2 | +| main.rs:829:13:829:14 | x3 | | main.rs:800:5:801:19 | S | +| main.rs:829:13:829:14 | x3 | T | main.rs:803:5:804:14 | S2 | +| main.rs:829:18:829:22 | S(...) | | main.rs:800:5:801:19 | S | +| main.rs:829:18:829:22 | S(...) | T | main.rs:803:5:804:14 | S2 | +| main.rs:829:20:829:21 | S2 | | main.rs:803:5:804:14 | S2 | +| main.rs:831:26:831:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:831:26:831:41 | ...::m2(...) | &T | main.rs:803:5:804:14 | S2 | +| main.rs:831:38:831:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:831:38:831:40 | &x3 | &T | main.rs:800:5:801:19 | S | +| main.rs:831:38:831:40 | &x3 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:831:39:831:40 | x3 | | main.rs:800:5:801:19 | S | +| main.rs:831:39:831:40 | x3 | T | main.rs:803:5:804:14 | S2 | +| main.rs:832:26:832:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:832:26:832:41 | ...::m3(...) | &T | main.rs:803:5:804:14 | S2 | +| main.rs:832:38:832:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:832:38:832:40 | &x3 | &T | main.rs:800:5:801:19 | S | +| main.rs:832:38:832:40 | &x3 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:832:39:832:40 | x3 | | main.rs:800:5:801:19 | S | +| main.rs:832:39:832:40 | x3 | T | main.rs:803:5:804:14 | S2 | +| main.rs:834:13:834:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:834:13:834:14 | x4 | &T | main.rs:800:5:801:19 | S | +| main.rs:834:13:834:14 | x4 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:834:18:834:23 | &... | | file://:0:0:0:0 | & | +| main.rs:834:18:834:23 | &... | &T | main.rs:800:5:801:19 | S | +| main.rs:834:18:834:23 | &... | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:834:19:834:23 | S(...) | | main.rs:800:5:801:19 | S | +| main.rs:834:19:834:23 | S(...) | T | main.rs:803:5:804:14 | S2 | +| main.rs:834:21:834:22 | S2 | | main.rs:803:5:804:14 | S2 | +| main.rs:836:26:836:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:836:26:836:27 | x4 | &T | main.rs:800:5:801:19 | S | +| main.rs:836:26:836:27 | x4 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:836:26:836:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:836:26:836:32 | x4.m2() | &T | main.rs:803:5:804:14 | S2 | +| main.rs:837:26:837:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:837:26:837:27 | x4 | &T | main.rs:800:5:801:19 | S | +| main.rs:837:26:837:27 | x4 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:837:26:837:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:837:26:837:32 | x4.m3() | &T | main.rs:803:5:804:14 | S2 | +| main.rs:839:13:839:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:839:13:839:14 | x5 | &T | main.rs:800:5:801:19 | S | +| main.rs:839:13:839:14 | x5 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:839:18:839:23 | &... | | file://:0:0:0:0 | & | +| main.rs:839:18:839:23 | &... | &T | main.rs:800:5:801:19 | S | +| main.rs:839:18:839:23 | &... | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:839:19:839:23 | S(...) | | main.rs:800:5:801:19 | S | +| main.rs:839:19:839:23 | S(...) | T | main.rs:803:5:804:14 | S2 | +| main.rs:839:21:839:22 | S2 | | main.rs:803:5:804:14 | S2 | +| main.rs:841:26:841:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:841:26:841:27 | x5 | &T | main.rs:800:5:801:19 | S | +| main.rs:841:26:841:27 | x5 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:841:26:841:32 | x5.m1() | | main.rs:803:5:804:14 | S2 | +| main.rs:842:26:842:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:842:26:842:27 | x5 | &T | main.rs:800:5:801:19 | S | +| main.rs:842:26:842:27 | x5 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:842:26:842:29 | x5.0 | | main.rs:803:5:804:14 | S2 | +| main.rs:844:13:844:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:844:13:844:14 | x6 | &T | main.rs:800:5:801:19 | S | +| main.rs:844:13:844:14 | x6 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:844:18:844:23 | &... | | file://:0:0:0:0 | & | +| main.rs:844:18:844:23 | &... | &T | main.rs:800:5:801:19 | S | +| main.rs:844:18:844:23 | &... | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:844:19:844:23 | S(...) | | main.rs:800:5:801:19 | S | +| main.rs:844:19:844:23 | S(...) | T | main.rs:803:5:804:14 | S2 | +| main.rs:844:21:844:22 | S2 | | main.rs:803:5:804:14 | S2 | +| main.rs:846:26:846:30 | (...) | | main.rs:800:5:801:19 | S | +| main.rs:846:26:846:30 | (...) | T | main.rs:803:5:804:14 | S2 | +| main.rs:846:26:846:35 | ... .m1() | | main.rs:803:5:804:14 | S2 | +| main.rs:846:27:846:29 | * ... | | main.rs:800:5:801:19 | S | +| main.rs:846:27:846:29 | * ... | T | main.rs:803:5:804:14 | S2 | +| main.rs:846:28:846:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:846:28:846:29 | x6 | &T | main.rs:800:5:801:19 | S | +| main.rs:846:28:846:29 | x6 | &T.T | main.rs:803:5:804:14 | S2 | +| main.rs:853:16:853:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:853:16:853:20 | SelfParam | &T | main.rs:851:5:859:5 | Self [trait MyTrait] | +| main.rs:856:16:856:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:856:16:856:20 | SelfParam | &T | main.rs:851:5:859:5 | Self [trait MyTrait] | +| main.rs:856:32:858:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:856:32:858:9 | { ... } | &T | main.rs:851:5:859:5 | Self [trait MyTrait] | +| main.rs:857:13:857:16 | self | | file://:0:0:0:0 | & | +| main.rs:857:13:857:16 | self | &T | main.rs:851:5:859:5 | Self [trait MyTrait] | +| main.rs:857:13:857:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:857:13:857:22 | self.foo() | &T | main.rs:851:5:859:5 | Self [trait MyTrait] | +| main.rs:865:16:865:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:865:16:865:20 | SelfParam | &T | main.rs:861:5:861:20 | MyStruct | +| main.rs:865:36:867:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:865:36:867:9 | { ... } | &T | main.rs:861:5:861:20 | MyStruct | +| main.rs:866:13:866:16 | self | | file://:0:0:0:0 | & | +| main.rs:866:13:866:16 | self | &T | main.rs:861:5:861:20 | MyStruct | +| main.rs:871:13:871:13 | x | | main.rs:861:5:861:20 | MyStruct | +| main.rs:871:17:871:24 | MyStruct | | main.rs:861:5:861:20 | MyStruct | +| main.rs:872:9:872:9 | x | | main.rs:861:5:861:20 | MyStruct | +| main.rs:872:9:872:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:872:9:872:15 | x.bar() | &T | main.rs:861:5:861:20 | MyStruct | +| main.rs:882:16:882:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:882:16:882:20 | SelfParam | &T | main.rs:879:5:879:26 | MyStruct | +| main.rs:882:16:882:20 | SelfParam | &T.T | main.rs:881:10:881:10 | T | +| main.rs:882:32:884:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:882:32:884:9 | { ... } | &T | main.rs:879:5:879:26 | MyStruct | +| main.rs:882:32:884:9 | { ... } | &T.T | main.rs:881:10:881:10 | T | +| main.rs:883:13:883:16 | self | | file://:0:0:0:0 | & | +| main.rs:883:13:883:16 | self | &T | main.rs:879:5:879:26 | MyStruct | +| main.rs:883:13:883:16 | self | &T.T | main.rs:881:10:881:10 | T | +| main.rs:888:13:888:13 | x | | main.rs:879:5:879:26 | MyStruct | +| main.rs:888:13:888:13 | x | T | main.rs:877:5:877:13 | S | +| main.rs:888:17:888:27 | MyStruct(...) | | main.rs:879:5:879:26 | MyStruct | +| main.rs:888:17:888:27 | MyStruct(...) | T | main.rs:877:5:877:13 | S | +| main.rs:888:26:888:26 | S | | main.rs:877:5:877:13 | S | +| main.rs:889:9:889:9 | x | | main.rs:879:5:879:26 | MyStruct | +| main.rs:889:9:889:9 | x | T | main.rs:877:5:877:13 | S | +| main.rs:889:9:889:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:889:9:889:15 | x.foo() | &T | main.rs:879:5:879:26 | MyStruct | +| main.rs:889:9:889:15 | x.foo() | &T.T | main.rs:877:5:877:13 | S | +| main.rs:897:15:897:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:897:15:897:19 | SelfParam | &T | main.rs:894:5:894:13 | S | +| main.rs:897:31:899:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:897:31:899:9 | { ... } | &T | main.rs:894:5:894:13 | S | +| main.rs:898:13:898:19 | &... | | file://:0:0:0:0 | & | +| main.rs:898:13:898:19 | &... | &T | main.rs:894:5:894:13 | S | +| main.rs:898:14:898:19 | &... | | file://:0:0:0:0 | & | +| main.rs:898:14:898:19 | &... | &T | main.rs:894:5:894:13 | S | +| main.rs:898:15:898:19 | &self | | file://:0:0:0:0 | & | +| main.rs:898:15:898:19 | &self | &T | main.rs:894:5:894:13 | S | +| main.rs:898:16:898:19 | self | | file://:0:0:0:0 | & | +| main.rs:898:16:898:19 | self | &T | main.rs:894:5:894:13 | S | +| main.rs:901:15:901:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:901:15:901:25 | SelfParam | &T | main.rs:894:5:894:13 | S | +| main.rs:901:37:903:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:901:37:903:9 | { ... } | &T | main.rs:894:5:894:13 | S | +| main.rs:902:13:902:19 | &... | | file://:0:0:0:0 | & | +| main.rs:902:13:902:19 | &... | &T | main.rs:894:5:894:13 | S | +| main.rs:902:14:902:19 | &... | | file://:0:0:0:0 | & | +| main.rs:902:14:902:19 | &... | &T | main.rs:894:5:894:13 | S | +| main.rs:902:15:902:19 | &self | | file://:0:0:0:0 | & | +| main.rs:902:15:902:19 | &self | &T | main.rs:894:5:894:13 | S | +| main.rs:902:16:902:19 | self | | file://:0:0:0:0 | & | +| main.rs:902:16:902:19 | self | &T | main.rs:894:5:894:13 | S | +| main.rs:905:15:905:15 | x | | file://:0:0:0:0 | & | +| main.rs:905:15:905:15 | x | &T | main.rs:894:5:894:13 | S | +| main.rs:905:34:907:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:905:34:907:9 | { ... } | &T | main.rs:894:5:894:13 | S | +| main.rs:906:13:906:13 | x | | file://:0:0:0:0 | & | +| main.rs:906:13:906:13 | x | &T | main.rs:894:5:894:13 | S | +| main.rs:909:15:909:15 | x | | file://:0:0:0:0 | & | +| main.rs:909:15:909:15 | x | &T | main.rs:894:5:894:13 | S | +| main.rs:909:34:911:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:909:34:911:9 | { ... } | &T | main.rs:894:5:894:13 | S | +| main.rs:910:13:910:16 | &... | | file://:0:0:0:0 | & | +| main.rs:910:13:910:16 | &... | &T | main.rs:894:5:894:13 | S | +| main.rs:910:14:910:16 | &... | | file://:0:0:0:0 | & | +| main.rs:910:14:910:16 | &... | &T | main.rs:894:5:894:13 | S | +| main.rs:910:15:910:16 | &x | | file://:0:0:0:0 | & | +| main.rs:910:15:910:16 | &x | &T | main.rs:894:5:894:13 | S | +| main.rs:910:16:910:16 | x | | file://:0:0:0:0 | & | +| main.rs:910:16:910:16 | x | &T | main.rs:894:5:894:13 | S | +| main.rs:915:13:915:13 | x | | main.rs:894:5:894:13 | S | +| main.rs:915:17:915:20 | S {...} | | main.rs:894:5:894:13 | S | +| main.rs:916:9:916:9 | x | | main.rs:894:5:894:13 | S | +| main.rs:916:9:916:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:916:9:916:14 | x.f1() | &T | main.rs:894:5:894:13 | S | +| main.rs:917:9:917:9 | x | | main.rs:894:5:894:13 | S | +| main.rs:917:9:917:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:917:9:917:14 | x.f2() | &T | main.rs:894:5:894:13 | S | +| main.rs:918:9:918:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:918:9:918:17 | ...::f3(...) | &T | main.rs:894:5:894:13 | S | +| main.rs:918:15:918:16 | &x | | file://:0:0:0:0 | & | +| main.rs:918:15:918:16 | &x | &T | main.rs:894:5:894:13 | S | +| main.rs:918:16:918:16 | x | | main.rs:894:5:894:13 | S | +| main.rs:924:5:924:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:925:5:925:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:925:20:925:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:925:41:925:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo |