pub struct BlockCall { /* private fields */ }
Expand description

A pair of a Block and its arguments, stored in a single EntityList internally.

NOTE: We don’t expose either value_to_block or block_to_value outside of this module because this operation is not generally safe. However, as the two share the same underlying layout, they can be stored in the same value pool.

BlockCall makes use of this shared layout by storing all of its contents (a block and its argument) in a single EntityList. This is a bit better than introducing a new entity type for the pair of a block name and the arguments entity list, as we don’t pay any indirection penalty to get to the argument values – they’re stored in-line with the block in the same list.

The BlockCall::new function guarantees this layout by requiring a block argument that’s written in as the first element of the EntityList. Any subsequent entries are always assumed to be real Values.

Implementations§

source§

impl BlockCall

source

pub fn new(block: Block, args: &[Value], pool: &mut ValueListPool) -> Self

Construct a BlockCall with the given block and arguments.

source

pub fn block(&self, pool: &ValueListPool) -> Block

Return the block for this BlockCall.

source

pub fn set_block(&mut self, block: Block, pool: &mut ValueListPool)

Replace the block for this BlockCall.

source

pub fn append_argument(&mut self, arg: Value, pool: &mut ValueListPool)

Append an argument to the block args.

source

pub fn args_slice<'a>(&self, pool: &'a ValueListPool) -> &'a [Value]

Return a slice for the arguments of this block.

source

pub fn args_slice_mut<'a>( &'a mut self, pool: &'a mut ValueListPool ) -> &'a mut [Value]

Return a slice for the arguments of this block.

source

pub fn remove(&mut self, ix: usize, pool: &mut ValueListPool)

Remove the argument at ix from the argument list.

source

pub fn clear(&mut self, pool: &mut ValueListPool)

Clear out the arguments list.

source

pub fn extend<I>(&mut self, elements: I, pool: &mut ValueListPool)where I: IntoIterator<Item = Value>,

Appends multiple elements to the arguments.

source

pub fn display<'a>(&self, pool: &'a ValueListPool) -> DisplayBlockCall<'a>

Return a value that can display this block call.

Trait Implementations§

source§

impl Clone for BlockCall

source§

fn clone(&self) -> BlockCall

Returns a copy 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 BlockCall

source§

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

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

impl Hash for BlockCall

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq<BlockCall> for BlockCall

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for BlockCall

source§

impl StructuralPartialEq for BlockCall

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

impl<T> CallHasher for Twhere T: Hash + ?Sized,

§

default fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where H: Hash + ?Sized, B: BuildHasher,

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.