Skip to main content

Fact

Struct Fact 

Source
pub struct Fact {
    pub type_name: String,
    pub args: Option<Vec<String>>,
    pub call: Option<String>,
    pub awaited: bool,
    pub is_array: bool,
    pub nullable: bool,
    pub lambda: Option<LambdaSlot>,
}
Expand description

One receiver fact: the declared type NAME plus that type’s top-level type-argument descriptors when it carried any. Two facts agree only when BOTH halves do, so Box<int> a and Box<string> a in sibling blocks conflict exactly like two different type names would.

Fields§

§type_name: String

The type name value.

§args: Option<Vec<String>>

The args value.

§call: Option<String>

When set, the name’s type is whatever the method of this name returns on the type type_name stands for, a lookup only the resolver can do. Part of the equality the table compares, so var x = A.Make() and var x = A.Build() in sibling blocks conflict exactly like two different type names would.

§awaited: bool

true when this is a call fact (call.is_some()) built from an AWAITED invocation (var x = await Q.M()); meaningless – and always false – when call is None. Part of the equality the table compares, so var x = Q.M() and var x = await Q.M() in sibling blocks conflict exactly like two different callees would, rather than silently picking one awaited-ness for a name the source gives two.

§is_array: bool

true when the declaration’s own type node was, at its TOP level, an array_type (Widget[]) – set ONLY by type_fact, false everywhere else (a call fact, a receiver-args unwrap, this/base’s own fact: none of those can be an array). base_type_identifier already collapses Widget[] to the same type_name/args shape a plain Widget field would carry (the element type’s own base identifier, no type-argument list), so this bit is the ONLY signal left that distinguishes “one Widget” from “an array of Widget” – needed by the lambda-parameter element-typing rule, which must tell Widget[] apart from Widget even though both facts otherwise read identically. Part of the equality the table compares.

§nullable: bool

true when the declaration’s own type node was, at its TOP level, a nullable_type (Widget?) – set ONLY by type_fact, false everywhere else, mirroring is_array: a call fact, a receiver-args unwrap and this/base’s own fact are never nullable-annotated. base_type_identifier already unwraps Widget? to the same type_name a plain Widget field would carry, so this bit is the only signal left that a System.Nullable<T> sits between the declared name and the value – needed so the resolver can refuse a member the wrapper itself owns (.Value, .HasValue, .GetValueOrDefault) rather than binding T’s own same-named member. Part of the equality the table compares.

§lambda: Option<LambdaSlot>

When set, the name is an untyped lambda parameter whose type is the corresponding delegate parameter of the callee this slot names – a lookup only the resolver can do; type_name is empty and call is None. Part of the equality the table compares, so two sibling lambdas binding the same parameter name to different callees conflict exactly like two different type names would.

Trait Implementations§

Source§

impl Clone for Fact

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Eq for Fact

Source§

impl PartialEq for Fact

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Fact

Auto Trait Implementations§

§

impl Freeze for Fact

§

impl RefUnwindSafe for Fact

§

impl Send for Fact

§

impl Sync for Fact

§

impl Unpin for Fact

§

impl UnsafeUnpin for Fact

§

impl UnwindSafe for Fact

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.