[−][src]Enum rhai::Expr
[INTERNALS] An expression sub-tree.
Exported under the internals
feature only.
Each variant is at most one pointer in size (for speed), with everything being allocated together in one single tuple.
WARNING
This type is volatile and may change.
Variants
Integer constant.
FloatConstant(Box<FloatWrapper>)
Floating-point constant.
Character constant.
StringConstant(Box<(ImmutableString, Position)>)
String constant.
FnPointer(Box<(ImmutableString, Position)>)
FnPtr constant.
Variable access - ((variable name, position), optional modules, hash, optional index)
Property access.
{ stmt }
Wrapped expression - should not be optimized away.
FnCall(Box<((Cow<'static, str>, bool, bool, Position), Option<Box<ModuleRef>>, u64, StaticVec<Expr>, Option<bool>)>)
func(expr, ... ) - ((function name, native_only, capture, position), optional modules, hash, arguments, optional default value)
Use Cow<'static, str>
because a lot of operators (e.g. ==
, >=
) are implemented as function calls
and the function names are predictable, so no need to allocate a new String
.
expr op= expr
lhs.rhs
expr[expr]
[ expr, ... ]
#{ name:expr, ... }
lhs in rhs
lhs && rhs
lhs || rhs
True(Position)
true
False(Position)
false
Unit(Position)
()
Custom(Box<(CustomExpr, Position)>)
Custom syntax
Implementations
impl Expr
[src]
pub fn get_type_id(&self) -> Option<TypeId>
[src]
Get the type of an expression.
Returns None
if the expression's result type is not constant.
pub fn get_constant_value(&self) -> Option<Dynamic>
[src]
Get the Dynamic
value of a constant expression.
Returns None
if the expression is not constant.
pub fn position(&self) -> Position
[src]
Get the Position
of the expression.
pub fn set_position(&mut self, new_pos: Position) -> &mut SelfⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
[src]
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Override the Position
of the expression.
pub fn is_pure(&self) -> bool
[src]
Is the expression pure?
A pure expression has no side effects.
pub fn is_unit(&self) -> bool
[src]
Is the expression the unit ()
literal?
pub fn is_literal(&self) -> bool
[src]
Is the expression a simple constant literal?
pub fn is_constant(&self) -> bool
[src]
Is the expression a constant?
pub fn is_valid_postfix(&self, token: &Token) -> bool
[src]
Is a particular token allowed as a postfix operator to this expression?
Trait Implementations
impl Clone for Expr
[src]
impl Debug for Expr
[src]
impl Default for Expr
[src]
impl<'a> From<&'a Expr> for Expression<'a>
[src]
impl Hash for Expr
[src]
Auto Trait Implementations
impl !RefUnwindSafe for Expr
impl !Send for Expr
impl !Sync for Expr
impl Unpin for Expr
impl !UnwindSafe for Expr
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow(&self) -> &TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
[src]
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
[src]
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,