pub struct Instruction<'a, T> { /* private fields */ }
Expand description

Instruction to be executed.

§Example

use homestar_invocation::{
    task::{
        instruction::{Ability, Input},
        Instruction,
    },
    Unit,
 };
use libipld::Ipld;
use url::Url;

let wasm = "bafybeia32q3oy6u47x624rmsmgrrlpn7ulruissmz5z2ap6alv7goe7h3q".to_string();
let resource = Url::parse(format!("ipfs://{wasm}").as_str()).unwrap();

let instr = Instruction::unique(
    resource,
    Ability::from("wasm/run"),
    Input::<Unit>::Ipld(Ipld::List(vec![Ipld::Bool(true)]))
);

We can also set-up an Instruction with a Deferred input to await on:

use homestar_invocation::{
    pointer::{Await, AwaitResult},
    task::{
        instruction::{Ability, Input, Nonce},
        Instruction,
    },
    Pointer, Unit,
 };
use libipld::{cid::{multihash::{Code, MultihashDigest}, Cid}, Ipld, Link};
use url::Url;
let wasm = "bafybeia32q3oy6u47x624rmsmgrrlpn7ulruissmz5z2ap6alv7goe7h3q".to_string();
let resource = Url::parse(format!("ipfs://{wasm}").as_str()).expect("IPFS URL");
let h = Code::Blake3_256.digest(b"beep boop");
let cid = Cid::new_v1(0x55, h);
let link: Link<Cid> = Link::new(cid);
let awaited_instr = Pointer::new_from_link(link);

let instr = Instruction::new_with_nonce(
    resource,
    Ability::from("wasm/run"),
    Input::<Unit>::Deferred(Await::new(awaited_instr, AwaitResult::Ok)),
    Nonce::generate()
);

// And covert it to a pointer:
let ptr = Pointer::try_from(instr).unwrap();

Implementations§

source§

impl<T> Instruction<'_, T>

source

pub fn new(rsc: Url, ability: Ability, input: Input<T>) -> Self

Create a new Instruction with an empty Nonce.

source

pub fn new_with_nonce( rsc: Url, ability: Ability, input: Input<T>, nnc: Nonce ) -> Self

Create a new Instruction with a given Nonce.

source

pub fn unique(rsc: Url, ability: Ability, input: Input<T>) -> Self

Create a unique Instruction, with a default Nonce generator.

source

pub fn resource(&self) -> &Url

Return Instruction resource, i.e. Url.

source

pub fn op(&self) -> &Ability

Return Ability associated with op.

source

pub fn input(&self) -> &Input<T>

source

pub fn nonce(&self) -> &Nonce

Return Nonce reference.

Trait Implementations§

source§

impl<'a, T: Clone> Clone for Instruction<'a, T>

source§

fn clone(&self) -> Instruction<'a, T>

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<'a, T> DagCbor for Instruction<'a, T>
where Ipld: From<T>,

source§

fn to_cid(self) -> Result<Cid, Error<Unit>>

Performs the conversion from an owned Self to Cid.
source§

fn to_dag_json(self) -> Result<Vec<u8>, Error<Unit>>

Serialize Self to JSON bytes.
source§

fn to_dagjson_string(self) -> Result<String, Error<Unit>>

Serialize Self to JSON String.
source§

fn to_cbor(self) -> Result<Vec<u8>, Error<Unit>>

Serialize Self to CBOR bytes.
source§

fn to_cbor_file(self, filename: String) -> Result<(), Error<Unit>>

Serialize Self to a CBOR file.
source§

impl<'a, T: Debug> Debug for Instruction<'a, T>

source§

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

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

impl<'de, 'a, T> Deserialize<'de> for Instruction<'a, T>
where T: Deserialize<'de>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<T> From<Instruction<'_, T>> for Ipld
where Ipld: From<T>,

source§

fn from(instruction: Instruction<'_, T>) -> Self

Converts to this type from the input type.
source§

impl<'a, T> From<Instruction<'a, T>> for RunInstruction<'a, T>

source§

fn from(instruction: Instruction<'a, T>) -> Self

Converts to this type from the input type.
source§

impl<'a, T> JsonSchema for Instruction<'a, T>

source§

fn schema_name() -> String

The name of the generated JSON Schema. Read more
source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
source§

fn json_schema(gen: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
source§

fn is_referenceable() -> bool

Whether JSON Schemas generated for this type should be re-used where possible using the $ref keyword. Read more
source§

impl<'a, T: PartialEq> PartialEq for Instruction<'a, T>

source§

fn eq(&self, other: &Instruction<'a, T>) -> 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<'a, T> Serialize for Instruction<'a, T>
where T: Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<T> TryFrom<&Ipld> for Instruction<'_, T>
where T: From<Ipld>,

§

type Error = Error<Unit>

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

fn try_from(ipld: &Ipld) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<T> TryFrom<Instruction<'_, T>> for Pointer
where Ipld: From<T>,

§

type Error = Error<Unit>

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

fn try_from(instruction: Instruction<'_, T>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<T> TryFrom<Ipld> for Instruction<'_, T>
where T: From<Ipld>,

§

type Error = Error<Unit>

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

fn try_from(ipld: Ipld) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<'a, T> TryFrom<RunInstruction<'a, T>> for Instruction<'a, T>
where T: Debug,

§

type Error = Error<RunInstruction<'a, T>>

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

fn try_from(run: RunInstruction<'a, T>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<'a, T> StructuralPartialEq for Instruction<'a, T>

Auto Trait Implementations§

§

impl<'a, T> Freeze for Instruction<'a, T>
where T: Freeze,

§

impl<'a, T> RefUnwindSafe for Instruction<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> Send for Instruction<'a, T>
where T: Send,

§

impl<'a, T> Sync for Instruction<'a, T>
where T: Sync,

§

impl<'a, T> Unpin for Instruction<'a, T>
where T: Unpin,

§

impl<'a, T> UnwindSafe for Instruction<'a, T>
where T: UnwindSafe,

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> Base64Encode for T
where T: DagJson,

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> DagJson for T

source§

fn to_dag_json(&self) -> Result<Vec<u8>, Error>

source§

fn from_dag_json(json_bytes: &[u8]) -> Result<Self, Error>

source§

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

source§

fn __clone_box(&self, _: Private) -> *mut ()

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> IntoSql for T

source§

fn into_sql<T>(self) -> Self::Expression

Convert self to an expression for Diesel’s query builder. Read more
source§

fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression

Convert &self to an expression for Diesel’s query builder. Read more
source§

impl<T> References<RawCodec> for T

source§

fn references<R, E>(_c: RawCodec, _r: &mut R, _set: &mut E) -> Result<(), Error>
where R: Read, E: Extend<Cid<64>>,

Scrape the references from an impl Read. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where 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 T
where 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 T
where 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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<U> UcanStoreConditionalSend for U
where U: Send,

source§

impl<U> UcanStoreConditionalSendSync for U
where U: Send + Sync,