pub struct Variable<'hir> {Show 15 fields
pub source: SourceId,
pub contract: Option<ContractId>,
pub function: Option<FunctionId>,
pub span: Span,
pub kind: VarKind,
pub ty: Type<'hir>,
pub name: Option<Ident>,
pub visibility: Option<Visibility>,
pub mutability: Option<VarMut>,
pub data_location: Option<DataLocation>,
pub override_: bool,
pub overrides: &'hir [ContractId],
pub indexed: bool,
pub initializer: Option<&'hir Expr<'hir>>,
pub getter: Option<FunctionId>,
}Expand description
A constant or variable declaration.
Fields§
§source: SourceIdThe source this variable is defined in.
contract: Option<ContractId>The contract this variable is defined in, if any.
function: Option<FunctionId>The function this variable is defined in, if any.
span: SpanThe variable’s span.
kind: VarKindThe kind of variable.
ty: Type<'hir>The variable’s type.
name: Option<Ident>The variable’s name.
visibility: Option<Visibility>The visibility of the variable.
mutability: Option<VarMut>§data_location: Option<DataLocation>§override_: bool§overrides: &'hir [ContractId]§indexed: bool§initializer: Option<&'hir Expr<'hir>>§getter: Option<FunctionId>The compiler-generated getter function, if any.
Implementations§
Source§impl<'hir> Variable<'hir>
impl<'hir> Variable<'hir>
Sourcepub fn new(
source: SourceId,
ty: Type<'hir>,
name: Option<Ident>,
kind: VarKind,
) -> Variable<'hir>
pub fn new( source: SourceId, ty: Type<'hir>, name: Option<Ident>, kind: VarKind, ) -> Variable<'hir>
Creates a new variable.
Sourcepub fn new_stmt(
source: SourceId,
contract: ContractId,
function: FunctionId,
ty: Type<'hir>,
name: Ident,
) -> Variable<'hir>
pub fn new_stmt( source: SourceId, contract: ContractId, function: FunctionId, ty: Type<'hir>, name: Ident, ) -> Variable<'hir>
Creates a new variable statement.
Sourcepub fn description(&self) -> &'static str
pub fn description(&self) -> &'static str
Returns the description of the variable.
Sourcepub fn is_constant(&self) -> bool
pub fn is_constant(&self) -> bool
Returns true if the variable is constant.
Sourcepub fn is_immutable(&self) -> bool
pub fn is_immutable(&self) -> bool
Returns true if the variable is immutable.
pub fn is_l_value(&self) -> bool
pub fn is_struct_member(&self) -> bool
pub fn is_event_or_error_parameter(&self) -> bool
pub fn is_local_variable(&self) -> bool
pub fn is_callable_or_catch_parameter(&self) -> bool
pub fn is_local_or_return(&self) -> bool
pub fn is_return_parameter(&self) -> bool
pub fn is_try_catch_parameter(&self) -> bool
Sourcepub fn is_state_variable(&self) -> bool
pub fn is_state_variable(&self) -> bool
Returns true if the variable is a state variable.
pub fn is_file_level_variable(&self) -> bool
Trait Implementations§
Auto Trait Implementations§
impl<'hir> Freeze for Variable<'hir>
impl<'hir> RefUnwindSafe for Variable<'hir>
impl<'hir> Send for Variable<'hir>
impl<'hir> Sync for Variable<'hir>
impl<'hir> Unpin for Variable<'hir>
impl<'hir> UnwindSafe for Variable<'hir>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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