Skip to content

Commit

Permalink
Rename Deps* types, add Copy to DepsRef
Browse files Browse the repository at this point in the history
  • Loading branch information
ethanfrey committed Oct 26, 2020
1 parent 5a3f0d1 commit d0eed39
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 27 deletions.
13 changes: 7 additions & 6 deletions packages/std/src/deps.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,26 @@ use crate::QuerierWrapper;
/// 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.
pub struct Deps<S: Storage, A: Api, Q: Querier> {
pub struct OwnedDeps<S: Storage, A: Api, Q: Querier> {
pub storage: S,
pub api: A,
pub querier: Q,
}

pub struct DepsMut<'a> {
pub struct Deps<'a> {
pub storage: &'a mut dyn Storage,
pub api: &'a dyn Api,
pub querier: QuerierWrapper<'a>,
}

#[derive(Copy, Clone)]
pub struct DepsRef<'a> {
pub storage: &'a dyn Storage,
pub api: &'a dyn Api,
pub querier: QuerierWrapper<'a>,
}

impl<S: Storage, A: Api, Q: Querier> Deps<S, A, Q> {
impl<S: Storage, A: Api, Q: Querier> OwnedDeps<S, A, Q> {
pub fn as_ref(&'_ self) -> DepsRef<'_> {
DepsRef {
storage: &self.storage,
Expand All @@ -32,16 +33,16 @@ impl<S: Storage, A: Api, Q: Querier> Deps<S, A, Q> {
}
}

pub fn as_mut(&'_ mut self) -> DepsMut<'_> {
DepsMut {
pub fn as_mut(&'_ mut self) -> Deps<'_> {
Deps {
storage: &mut self.storage,
api: &self.api,
querier: QuerierWrapper::new(&self.querier),
}
}
}

impl<'a> DepsMut<'a> {
impl<'a> Deps<'a> {
pub fn as_ref(&'_ self) -> DepsRef<'_> {
DepsRef {
storage: self.storage,
Expand Down
10 changes: 5 additions & 5 deletions packages/std/src/entry_points.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
/// The second module should export three functions with the following signatures:
/// ```
/// # use cosmwasm_std::{
/// # Storage, Api, Querier, DepsMut, DepsRef, Env, StdResult, Binary, MessageInfo,
/// # Storage, Api, Querier, Deps, DepsRef, Env, StdResult, Binary, MessageInfo,
/// # InitResult, HandleResult, QueryResult,
/// # };
/// #
/// # type InitMsg = ();
/// pub fn init(
/// deps: DepsMut,
/// deps: Deps,
/// env: Env,
/// info: MessageInfo,
/// msg: InitMsg,
Expand All @@ -22,7 +22,7 @@
///
/// # type HandleMsg = ();
/// pub fn handle(
/// deps: DepsMut,
/// deps: Deps,
/// env: Env,
/// info: MessageInfo,
/// msg: HandleMsg,
Expand Down Expand Up @@ -94,11 +94,11 @@ macro_rules! create_entry_points {
/// This macro is very similar to the `create_entry_points` macro, except it also requires the `migrate` method:
/// ```
/// # use cosmwasm_std::{
/// # Storage, Api, Querier, DepsMut, Env, StdResult, Binary, MigrateResult, MessageInfo,
/// # Storage, Api, Querier, Deps, Env, StdResult, Binary, MigrateResult, MessageInfo,
/// # };
/// # type MigrateMsg = ();
/// pub fn migrate(
/// deps: DepsMut,
/// deps: Deps,
/// _env: Env,
/// _info: MessageInfo,
/// msg: MigrateMsg,
Expand Down
20 changes: 10 additions & 10 deletions packages/std/src/exports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ use std::vec::Vec;
use schemars::JsonSchema;
use serde::{de::DeserializeOwned, Serialize};

use crate::deps::Deps;
use crate::deps::OwnedDeps;
use crate::imports::{ExternalApi, ExternalQuerier, ExternalStorage};
use crate::memory::{alloc, consume_region, release_buffer, Region};
use crate::results::{
ContractResult, HandleResponse, InitResponse, MigrateResponse, QueryResponse,
};
use crate::serde::{from_slice, to_vec};
use crate::types::Env;
use crate::{DepsMut, DepsRef, MessageInfo};
use crate::{Deps, DepsRef, MessageInfo};

#[cfg(feature = "staking")]
#[no_mangle]
Expand Down Expand Up @@ -68,7 +68,7 @@ macro_rules! r#try_into_contract_result {
/// - `C`: custom response message type (see CosmosMsg)
/// - `E`: error type for responses
pub fn do_init<M, C, E>(
init_fn: &dyn Fn(DepsMut, Env, MessageInfo, M) -> Result<InitResponse<C>, E>,
init_fn: &dyn Fn(Deps, Env, MessageInfo, M) -> Result<InitResponse<C>, E>,
env_ptr: u32,
info_ptr: u32,
msg_ptr: u32,
Expand All @@ -94,7 +94,7 @@ where
/// - `C`: custom response message type (see CosmosMsg)
/// - `E`: error type for responses
pub fn do_handle<M, C, E>(
handle_fn: &dyn Fn(DepsMut, Env, MessageInfo, M) -> Result<HandleResponse<C>, E>,
handle_fn: &dyn Fn(Deps, Env, MessageInfo, M) -> Result<HandleResponse<C>, E>,
env_ptr: u32,
info_ptr: u32,
msg_ptr: u32,
Expand All @@ -120,7 +120,7 @@ where
/// - `C`: custom response message type (see CosmosMsg)
/// - `E`: error type for responses
pub fn do_migrate<M, C, E>(
migrate_fn: &dyn Fn(DepsMut, Env, MessageInfo, M) -> Result<MigrateResponse<C>, E>,
migrate_fn: &dyn Fn(Deps, Env, MessageInfo, M) -> Result<MigrateResponse<C>, E>,
env_ptr: u32,
info_ptr: u32,
msg_ptr: u32,
Expand Down Expand Up @@ -159,7 +159,7 @@ where
}

fn _do_init<M, C, E>(
init_fn: &dyn Fn(DepsMut, Env, MessageInfo, M) -> Result<InitResponse<C>, E>,
init_fn: &dyn Fn(Deps, Env, MessageInfo, M) -> Result<InitResponse<C>, E>,
env_ptr: *mut Region,
info_ptr: *mut Region,
msg_ptr: *mut Region,
Expand All @@ -182,7 +182,7 @@ where
}

fn _do_handle<M, C, E>(
handle_fn: &dyn Fn(DepsMut, Env, MessageInfo, M) -> Result<HandleResponse<C>, E>,
handle_fn: &dyn Fn(Deps, Env, MessageInfo, M) -> Result<HandleResponse<C>, E>,
env_ptr: *mut Region,
info_ptr: *mut Region,
msg_ptr: *mut Region,
Expand All @@ -205,7 +205,7 @@ where
}

fn _do_migrate<M, C, E>(
migrate_fn: &dyn Fn(DepsMut, Env, MessageInfo, M) -> Result<MigrateResponse<C>, E>,
migrate_fn: &dyn Fn(Deps, Env, MessageInfo, M) -> Result<MigrateResponse<C>, E>,
env_ptr: *mut Region,
info_ptr: *mut Region,
msg_ptr: *mut Region,
Expand Down Expand Up @@ -247,8 +247,8 @@ where
}

/// Makes all bridges to external dependencies (i.e. Wasm imports) that are injected by the VM
fn make_dependencies() -> Deps<ExternalStorage, ExternalApi, ExternalQuerier> {
Deps {
fn make_dependencies() -> OwnedDeps<ExternalStorage, ExternalApi, ExternalQuerier> {
OwnedDeps {
storage: ExternalStorage::new(),
api: ExternalApi::new(),
querier: ExternalQuerier::new(),
Expand Down
2 changes: 1 addition & 1 deletion packages/std/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ mod types;

pub use crate::addresses::{CanonicalAddr, HumanAddr};
pub use crate::coins::{coin, coins, has_coins, Coin};
pub use crate::deps::{Deps, DepsMut, DepsRef};
pub use crate::deps::{Deps, DepsRef, OwnedDeps};
pub use crate::encoding::Binary;
pub use crate::errors::{StdError, StdResult, SystemError};
#[cfg(feature = "iterator")]
Expand Down
12 changes: 7 additions & 5 deletions packages/std/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::collections::HashMap;

use crate::addresses::{CanonicalAddr, HumanAddr};
use crate::coins::Coin;
use crate::deps::Deps;
use crate::deps::OwnedDeps;
use crate::encoding::Binary;
use crate::errors::{StdError, StdResult, SystemError};
use crate::query::{
Expand All @@ -21,9 +21,11 @@ pub const MOCK_CONTRACT_ADDR: &str = "cosmos2contract";

/// All external requirements that can be injected for unit tests.
/// It sets the given balance for the contract itself, nothing else
pub fn mock_dependencies(contract_balance: &[Coin]) -> Deps<MockStorage, MockApi, MockQuerier> {
pub fn mock_dependencies(
contract_balance: &[Coin],
) -> OwnedDeps<MockStorage, MockApi, MockQuerier> {
let contract_addr = HumanAddr::from(MOCK_CONTRACT_ADDR);
Deps {
OwnedDeps {
storage: MockStorage::default(),
api: MockApi::default(),
querier: MockQuerier::new(&[(&contract_addr, contract_balance)]),
Expand All @@ -34,8 +36,8 @@ pub fn mock_dependencies(contract_balance: &[Coin]) -> Deps<MockStorage, MockApi
/// Sets all balances provided (yoy must explicitly set contract balance if desired)
pub fn mock_dependencies_with_balances(
balances: &[(&HumanAddr, &[Coin])],
) -> Deps<MockStorage, MockApi, MockQuerier> {
Deps {
) -> OwnedDeps<MockStorage, MockApi, MockQuerier> {
OwnedDeps {
storage: MockStorage::default(),
api: MockApi::default(),
querier: MockQuerier::new(balances),
Expand Down

0 comments on commit d0eed39

Please sign in to comment.