pub struct Extern<S, A, Q> where
S: Storage,
A: Api,
Q: Querier, {
pub storage: S,
pub api: A,
pub querier: Q,
}
Expand description
Holds all external dependencies of the contract. Designed to allow easy dependency injection at runtime. This cannot be copied or cloned since it would behave differently for mock storages and a bridge storage in the VM.
Fields
storage: S
api: A
querier: Q
Implementations
sourceimpl<S, A, Q> Extern<S, A, Q> where
S: Storage,
A: Api,
Q: Querier,
impl<S, A, Q> Extern<S, A, Q> where
S: Storage,
A: Api,
Q: Querier,
sourcepub fn change_querier<T, F>(self, transform: F) -> Extern<S, A, T> where
T: Querier,
F: Fn(Q) -> T,
pub fn change_querier<T, F>(self, transform: F) -> Extern<S, A, T> where
T: Querier,
F: Fn(Q) -> T,
change_querier is a helper mainly for test code when swapping out the Querier from the auto-generated one from mock_dependencies. This changes the type of Extern so replaces requires some boilerplate.
Trait Implementations
sourceimpl<S: Storage, A: Api, Q: Querier> Composable<S, A, Q> for Extern<S, A, Q>
impl<S: Storage, A: Api, Q: Querier> Composable<S, A, Q> for Extern<S, A, Q>
fn set<Value: Serialize>(&mut self, key: &[u8], value: &Value) -> UsuallyOk
sourcefn set_ns<Value: Serialize>(
&mut self,
ns: &[u8],
key: &[u8],
value: &Value
) -> UsuallyOk
fn set_ns<Value: Serialize>(
&mut self,
ns: &[u8],
key: &[u8],
value: &Value
) -> UsuallyOk
Uses a single slice as namespace and it combines it with the key
sourcefn set_multi_ns<Value: Serialize>(
&mut self,
ns: &[&[u8]],
key: &[u8],
value: &Value
) -> UsuallyOk
fn set_multi_ns<Value: Serialize>(
&mut self,
ns: &[&[u8]],
key: &[u8],
value: &Value
) -> UsuallyOk
Uses an array of slices which are then combined according to the following spec: https://github.com/webmaster128/key-namespacing#nesting Read more
fn get<Value: DeserializeOwned>(&self, key: &[u8]) -> Eventually<Value>
fn get_ns<Value: DeserializeOwned>(
&self,
ns: &[u8],
key: &[u8]
) -> Eventually<Value>
fn get_multi_ns<Value: DeserializeOwned>(
&self,
ns: &[&[u8]],
key: &[u8]
) -> Eventually<Value>
fn remove(&mut self, key: &[u8])
fn remove_ns(&mut self, ns: &[u8], key: &[u8])
fn remove_multi_ns(&mut self, ns: &[&[u8]], key: &[u8])
fn humanize<Value: Humanize>(&self, value: Value) -> StdResult<Value::Output>
fn canonize<Value: Canonize>(&self, value: Value) -> StdResult<Value::Output>
Auto Trait Implementations
impl<S, A, Q> RefUnwindSafe for Extern<S, A, Q> where
A: RefUnwindSafe,
Q: RefUnwindSafe,
S: RefUnwindSafe,
impl<S, A, Q> Send for Extern<S, A, Q> where
Q: Send,
S: Send,
impl<S, A, Q> Sync for Extern<S, A, Q> where
A: Sync,
Q: Sync,
S: Sync,
impl<S, A, Q> Unpin for Extern<S, A, Q> where
A: Unpin,
Q: Unpin,
S: Unpin,
impl<S, A, Q> UnwindSafe for Extern<S, A, Q> where
A: UnwindSafe,
Q: UnwindSafe,
S: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more