Struct BindingExpression

Source
pub struct BindingExpression {
    pub expression: Expression,
    pub span: Option<SourceLocation>,
    pub priority: i32,
    pub animation: Option<PropertyAnimation>,
    pub analysis: Option<BindingAnalysis>,
    pub two_way_bindings: Vec<NamedReference>,
}
Expand description

The expression in the Element::binding hash table

Fields§

§expression: Expression§span: Option<SourceLocation>

The location of this expression in the source code

§priority: i32

How deep is this binding declared in the hierarchy. When two binding are conflicting for the same priority (because of two way binding), the lower priority wins. The priority starts at 1, and each level of inlining adds one to the priority. 0 means the expression was added by some passes and it is not explicit in the source code

§animation: Option<PropertyAnimation>§analysis: Option<BindingAnalysis>

The analysis information. None before it is computed

§two_way_bindings: Vec<NamedReference>

The properties this expression is aliased with using two way bindings

Implementations§

Source§

impl BindingExpression

Source

pub fn new_uncompiled(node: SyntaxNode) -> Self

Source

pub fn new_with_span(expression: Expression, span: SourceLocation) -> Self

Source

pub fn new_two_way(other: NamedReference) -> Self

Create an expression binding that simply is a two way binding to the other

Source

pub fn merge_with(&mut self, other: &Self) -> bool

Merge the other into this one. Normally, &self is kept intact (has priority) unless the expression is invalid, in which case the other one is taken.

Also the animation is taken if the other don’t have one, and the two ways binding are taken into account.

Returns true if the other expression was taken

Source

pub fn has_binding(&self) -> bool

returns false if there is no expression or two way binding

Methods from Deref<Target = Expression>§

Source

pub fn ty(&self) -> Type

Return the type of this property

Source

pub fn visit(&self, visitor: impl FnMut(&Self))

Call the visitor for each sub-expression. (note: this function does not recurse)

Source

pub fn visit_mut(&mut self, visitor: impl FnMut(&mut Self))

Source

pub fn visit_recursive(&self, visitor: &mut dyn FnMut(&Self))

Visit itself and each sub expression recursively

Source

pub fn visit_recursive_mut(&mut self, visitor: &mut dyn FnMut(&mut Self))

Visit itself and each sub expression recursively

Source

pub fn is_constant(&self) -> bool

Source

pub fn try_set_rw(&mut self) -> bool

Try to mark this expression to a lvalue that can be assigned to.

Return true if the expression is a “lvalue” that can be used as the left hand side of a = or += or similar

Trait Implementations§

Source§

impl Clone for BindingExpression

Source§

fn clone(&self) -> BindingExpression

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for BindingExpression

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for BindingExpression

Source§

type Target = Expression

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for BindingExpression

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl From<Expression> for BindingExpression

Source§

fn from(expression: Expression) -> Self

Converts to this type from the input type.
Source§

impl Spanned for BindingExpression

Auto Trait Implementations§

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<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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T> ErasedDestructor for T
where T: 'static,