Struct homestar_invocation::task::instruction::Instruction
source · 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>
impl<T> Instruction<'_, T>
sourcepub fn new(rsc: Url, ability: Ability, input: Input<T>) -> Self
pub fn new(rsc: Url, ability: Ability, input: Input<T>) -> Self
Create a new Instruction with an empty Nonce.
sourcepub fn new_with_nonce(
rsc: Url,
ability: Ability,
input: Input<T>,
nnc: Nonce
) -> Self
pub fn new_with_nonce( rsc: Url, ability: Ability, input: Input<T>, nnc: Nonce ) -> Self
Create a new Instruction with a given Nonce.
sourcepub fn unique(rsc: Url, ability: Ability, input: Input<T>) -> Self
pub fn unique(rsc: Url, ability: Ability, input: Input<T>) -> Self
Create a unique Instruction, with a default Nonce generator.
sourcepub fn resource(&self) -> &Url
pub fn resource(&self) -> &Url
Return Instruction resource, i.e. Url.
sourcepub fn input(&self) -> &Input<T>
pub fn input(&self) -> &Input<T>
Return Instruction Input.
Trait Implementations§
source§impl<'a, T: Clone> Clone for Instruction<'a, T>
impl<'a, T: Clone> Clone for Instruction<'a, T>
source§fn clone(&self) -> Instruction<'a, T>
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)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<'a, T> DagCbor for Instruction<'a, T>
impl<'a, T> DagCbor for Instruction<'a, T>
source§impl<'a, T: Debug> Debug for Instruction<'a, T>
impl<'a, T: Debug> Debug for Instruction<'a, T>
source§impl<'de, 'a, T> Deserialize<'de> for Instruction<'a, T>where
T: Deserialize<'de>,
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>,
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
impl<T> From<Instruction<'_, T>> for Ipld
source§fn from(instruction: Instruction<'_, T>) -> Self
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>
impl<'a, T> From<Instruction<'a, T>> for RunInstruction<'a, T>
source§fn from(instruction: Instruction<'a, T>) -> Self
fn from(instruction: Instruction<'a, T>) -> Self
Converts to this type from the input type.
source§impl<'a, T> JsonSchema for Instruction<'a, T>
impl<'a, T> JsonSchema for Instruction<'a, T>
source§fn schema_name() -> String
fn schema_name() -> String
The name of the generated JSON Schema. Read more
source§fn schema_id() -> Cow<'static, str>
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
fn json_schema(gen: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
Whether JSON Schemas generated for this type should be re-used where possible using the
$ref
keyword. Read moresource§impl<'a, T: PartialEq> PartialEq for Instruction<'a, T>
impl<'a, T: PartialEq> PartialEq for Instruction<'a, T>
source§fn eq(&self, other: &Instruction<'a, T>) -> bool
fn eq(&self, other: &Instruction<'a, T>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl<'a, T> Serialize for Instruction<'a, T>where
T: Serialize,
impl<'a, T> Serialize for Instruction<'a, T>where
T: Serialize,
source§impl<T> TryFrom<&Ipld> for Instruction<'_, T>
impl<T> TryFrom<&Ipld> for Instruction<'_, T>
source§impl<T> TryFrom<Instruction<'_, T>> for Pointer
impl<T> TryFrom<Instruction<'_, T>> for Pointer
source§impl<T> TryFrom<Ipld> for Instruction<'_, T>
impl<T> TryFrom<Ipld> for Instruction<'_, T>
source§impl<'a, T> TryFrom<RunInstruction<'a, T>> for Instruction<'a, T>where
T: Debug,
impl<'a, T> TryFrom<RunInstruction<'a, T>> for Instruction<'a, T>where
T: Debug,
§type Error = Error<RunInstruction<'a, T>>
type Error = Error<RunInstruction<'a, T>>
The type returned in the event of a conversion error.
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> Base64Encode for Twhere
T: DagJson,
impl<T> Base64Encode for Twhere
T: DagJson,
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> DagJson for Twhere
T: Serialize + DeserializeOwned,
impl<T> DagJson for Twhere
T: Serialize + DeserializeOwned,
source§impl<T> IntoSql for T
impl<T> IntoSql for T
source§fn into_sql<T>(self) -> Self::Expression
fn into_sql<T>(self) -> Self::Expression
Convert
self
to an expression for Diesel’s query builder. Read moresource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
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