pub struct InProgressResourceBuilder<T: AnyResourceType> { /* private fields */ }
Expand description
Utility for setting up a new resource, which has building in progress.
- You start the building process with one of the methods starting with
ResourceBuilder::new_
. - The allowed methods change depending on which methods have already been called. For example,
you can either use
owner_non_fungible_badge
or set access rules individually, but not both. - You can complete the building process using either
create_with_no_initial_supply()
ormint_initial_supply(..)
.
§Example
use scrypto_test::prelude::*;
let mut env = TestEnvironment::new();
let bucket = ResourceBuilder::new_fungible(OwnerRole::None)
.mint_initial_supply(5, &mut env)?;
Implementations§
Source§impl<T: IsNonFungibleLocalId, D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<T, D>>
impl<T: IsNonFungibleLocalId, D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<T, D>>
Sourcepub fn non_fungible_data_update_roles(
self,
non_fungible_data_update_roles: Option<NonFungibleDataUpdateRoles<RoleDefinition>>,
) -> Self
pub fn non_fungible_data_update_roles( self, non_fungible_data_update_roles: Option<NonFungibleDataUpdateRoles<RoleDefinition>>, ) -> Self
Sets how each non-fungible’s mutable data can be updated.
- The first parameter is the access rule which allows updating the mutable data of each non-fungible.
- The second parameter is the mutability / access rule which controls if and how the access rule can be updated.
§Examples
use scrypto_test::prelude::*;
#[derive(ScryptoSbor, NonFungibleData)]
struct NFData {
pub name: String,
#[mutable]
pub flag: bool,
}
// Permits the updating of non-fungible mutable data with a proof of a specific resource, and this is locked forever.
ResourceBuilder::new_ruid_non_fungible::<NFData>(OwnerRole::None)
.non_fungible_data_update_roles(non_fungible_data_update_roles! {
non_fungible_data_updater => rule!(require(resource_address));
non_fungible_data_updater_updater => rule!(deny_all);
});
// Does not currently permit the updating of non-fungible mutable data, but this is can be changed in future by the second rule.
ResourceBuilder::new_ruid_non_fungible::<NFData>(OwnerRole::None)
.non_fungible_data_update_roles(non_fungible_data_update_roles! {
non_fungible_data_updater => rule!(deny_all);
non_fungible_data_updater_updater => rule!(require(resource_address));
});
Source§impl InProgressResourceBuilder<FungibleResourceType>
impl InProgressResourceBuilder<FungibleResourceType>
Sourcepub fn divisibility(self, divisibility: u8) -> Self
pub fn divisibility(self, divisibility: u8) -> Self
Set the resource’s divisibility: the number of digits of precision after the decimal point in its balances.
0
means the resource is not divisible (balances are always whole numbers)18
is the maximum divisibility, and the default.
§Examples
use scrypto_test::prelude::*;
// Only permits whole-number balances.
ResourceBuilder::new_fungible(OwnerRole::None)
.divisibility(0);
// Only permits balances to 3 decimal places.
ResourceBuilder::new_fungible(OwnerRole::None)
.divisibility(3);
Source§impl InProgressResourceBuilder<FungibleResourceType>
impl InProgressResourceBuilder<FungibleResourceType>
Sourcepub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>(
self,
amount: impl Into<Decimal>,
env: &mut Y,
) -> Result<FungibleBucket, E>
pub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>( self, amount: impl Into<Decimal>, env: &mut Y, ) -> Result<FungibleBucket, E>
Creates resource with the given initial supply.
§Example
use scrypto_test::prelude::*;
let mut env = TestEnvironment::new();
let bucket: FungibleBucket = ResourceBuilder::new_fungible(OwnerRole::None)
.mint_initial_supply(5, &mut env)?;
Source§impl<D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<StringNonFungibleLocalId, D>>
impl<D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<StringNonFungibleLocalId, D>>
Sourcepub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>(
self,
entries: impl IntoIterator<Item = (StringNonFungibleLocalId, D)>,
env: &mut Y,
) -> Result<NonFungibleBucket, E>
pub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>( self, entries: impl IntoIterator<Item = (StringNonFungibleLocalId, D)>, env: &mut Y, ) -> Result<NonFungibleBucket, E>
Creates the non-fungible resource, and mints an individual non-fungible for each key/data pair provided.
§Example
use scrypto_test::prelude::*;
let mut env = TestEnvironment::new();
#[derive(ScryptoSbor, NonFungibleData)]
struct NFData {
pub name: String,
#[mutable]
pub flag: bool,
}
let bucket: NonFungibleBucket = ResourceBuilder::new_string_non_fungible::<NFData>(OwnerRole::None)
.mint_initial_supply(
[
("One".try_into().unwrap(), NFData { name: "NF One".to_owned(), flag: true }),
("Two".try_into().unwrap(), NFData { name: "NF Two".to_owned(), flag: true }),
],
&mut env,
)?;
Source§impl<D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<IntegerNonFungibleLocalId, D>>
impl<D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<IntegerNonFungibleLocalId, D>>
Sourcepub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>(
self,
entries: impl IntoIterator<Item = (IntegerNonFungibleLocalId, D)>,
env: &mut Y,
) -> Result<NonFungibleBucket, E>
pub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>( self, entries: impl IntoIterator<Item = (IntegerNonFungibleLocalId, D)>, env: &mut Y, ) -> Result<NonFungibleBucket, E>
Creates the non-fungible resource, and mints an individual non-fungible for each key/data pair provided.
§Example
use scrypto_test::prelude::*;
let mut env = TestEnvironment::new();
#[derive(ScryptoSbor, NonFungibleData)]
struct NFData {
pub name: String,
#[mutable]
pub flag: bool,
}
let bucket: NonFungibleBucket = ResourceBuilder::new_integer_non_fungible(OwnerRole::None)
.mint_initial_supply(
[
(1u64.into(), NFData { name: "NF One".to_owned(), flag: true }),
(2u64.into(), NFData { name: "NF Two".to_owned(), flag: true }),
],
&mut env,
)?;
Source§impl<D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<BytesNonFungibleLocalId, D>>
impl<D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<BytesNonFungibleLocalId, D>>
Sourcepub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>(
self,
entries: impl IntoIterator<Item = (BytesNonFungibleLocalId, D)>,
env: &mut Y,
) -> Result<NonFungibleBucket, E>
pub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>( self, entries: impl IntoIterator<Item = (BytesNonFungibleLocalId, D)>, env: &mut Y, ) -> Result<NonFungibleBucket, E>
Creates the non-fungible resource, and mints an individual non-fungible for each key/data pair provided.
§Example
use scrypto_test::prelude::*;
let mut env = TestEnvironment::new();
#[derive(ScryptoSbor, NonFungibleData)]
struct NFData {
pub name: String,
#[mutable]
pub flag: bool,
}
let bucket: NonFungibleBucket = ResourceBuilder::new_bytes_non_fungible::<NFData>(OwnerRole::None)
.mint_initial_supply(
[
(vec![1u8].try_into().unwrap(), NFData { name: "NF One".to_owned(), flag: true }),
(vec![2u8].try_into().unwrap(), NFData { name: "NF Two".to_owned(), flag: true }),
],
&mut env,
)?;
Source§impl<D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<RUIDNonFungibleLocalId, D>>
impl<D: NonFungibleData> InProgressResourceBuilder<NonFungibleResourceType<RUIDNonFungibleLocalId, D>>
Sourcepub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>(
self,
entries: impl IntoIterator<Item = D>,
env: &mut Y,
) -> Result<NonFungibleBucket, E>
pub fn mint_initial_supply<Y: SystemApi<E>, E: SystemApiError>( self, entries: impl IntoIterator<Item = D>, env: &mut Y, ) -> Result<NonFungibleBucket, E>
Creates the RUID non-fungible resource, and mints an individual non-fungible for each piece of data provided.
The system automatically generates a new RUID NonFungibleLocalId
for each non-fungible,
and assigns the given data to each.
§Example
use scrypto_test::prelude::*;
#[derive(ScryptoSbor, NonFungibleData)]
struct NFData {
pub name: String,
#[mutable]
pub flag: bool,
}
let bucket: NonFungibleBucket = ResourceBuilder::new_ruid_non_fungible::<NFData>(OwnerRole::None)
.mint_initial_supply(
[
(NFData { name: "NF One".to_owned(), flag: true }),
(NFData { name: "NF Two".to_owned(), flag: true }),
],
&mut env,
)?;
Trait Implementations§
Source§impl UpdateAuthBuilder for InProgressResourceBuilder<FungibleResourceType>
impl UpdateAuthBuilder for InProgressResourceBuilder<FungibleResourceType>
Source§fn mint_roles(self, mint_roles: Option<MintRoles<RoleDefinition>>) -> Self
fn mint_roles(self, mint_roles: Option<MintRoles<RoleDefinition>>) -> Self
Source§fn burn_roles(self, burn_roles: Option<BurnRoles<RoleDefinition>>) -> Self
fn burn_roles(self, burn_roles: Option<BurnRoles<RoleDefinition>>) -> Self
Source§fn recall_roles(self, recall_roles: Option<RecallRoles<RoleDefinition>>) -> Self
fn recall_roles(self, recall_roles: Option<RecallRoles<RoleDefinition>>) -> Self
Source§fn freeze_roles(self, freeze_roles: Option<FreezeRoles<RoleDefinition>>) -> Self
fn freeze_roles(self, freeze_roles: Option<FreezeRoles<RoleDefinition>>) -> Self
Source§fn withdraw_roles(
self,
withdraw_roles: Option<WithdrawRoles<RoleDefinition>>,
) -> Self
fn withdraw_roles( self, withdraw_roles: Option<WithdrawRoles<RoleDefinition>>, ) -> Self
Source§fn deposit_roles(
self,
deposit_roles: Option<DepositRoles<RoleDefinition>>,
) -> Self
fn deposit_roles( self, deposit_roles: Option<DepositRoles<RoleDefinition>>, ) -> Self
Source§impl<T: IsNonFungibleLocalId, D: NonFungibleData> UpdateAuthBuilder for InProgressResourceBuilder<NonFungibleResourceType<T, D>>
impl<T: IsNonFungibleLocalId, D: NonFungibleData> UpdateAuthBuilder for InProgressResourceBuilder<NonFungibleResourceType<T, D>>
Source§fn mint_roles(self, mint_roles: Option<MintRoles<RoleDefinition>>) -> Self
fn mint_roles(self, mint_roles: Option<MintRoles<RoleDefinition>>) -> Self
Source§fn burn_roles(self, burn_roles: Option<BurnRoles<RoleDefinition>>) -> Self
fn burn_roles(self, burn_roles: Option<BurnRoles<RoleDefinition>>) -> Self
Source§fn recall_roles(self, recall_roles: Option<RecallRoles<RoleDefinition>>) -> Self
fn recall_roles(self, recall_roles: Option<RecallRoles<RoleDefinition>>) -> Self
Source§fn freeze_roles(self, freeze_roles: Option<FreezeRoles<RoleDefinition>>) -> Self
fn freeze_roles(self, freeze_roles: Option<FreezeRoles<RoleDefinition>>) -> Self
Source§fn withdraw_roles(
self,
withdraw_roles: Option<WithdrawRoles<RoleDefinition>>,
) -> Self
fn withdraw_roles( self, withdraw_roles: Option<WithdrawRoles<RoleDefinition>>, ) -> Self
Source§fn deposit_roles(
self,
deposit_roles: Option<DepositRoles<RoleDefinition>>,
) -> Self
fn deposit_roles( self, deposit_roles: Option<DepositRoles<RoleDefinition>>, ) -> Self
Auto Trait Implementations§
impl<T> Freeze for InProgressResourceBuilder<T>
impl<T> RefUnwindSafe for InProgressResourceBuilder<T>
impl<T> Send for InProgressResourceBuilder<T>
impl<T> Sync for InProgressResourceBuilder<T>
impl<T> Unpin for InProgressResourceBuilder<T>
impl<T> UnwindSafe for InProgressResourceBuilder<T>
Blanket Implementations§
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
Source§impl<T, U> ContextualTryInto<U> for Twhere
U: ContextualTryFrom<T>,
impl<T, U> ContextualTryInto<U> for Twhere
U: ContextualTryFrom<T>,
type Error = <U as ContextualTryFrom<T>>::Error
type Context = <U as ContextualTryFrom<T>>::Context
fn contextual_try_into( self, context: &<U as ContextualTryFrom<T>>::Context, ) -> Result<U, <U as ContextualTryFrom<T>>::Error>
Source§impl<B> CreateWithNoSupplyBuilder for Bwhere
B: CanCreateWithNoSupply,
impl<B> CreateWithNoSupplyBuilder for Bwhere
B: CanCreateWithNoSupply,
Source§fn create_with_no_initial_supply<Y: SystemApi<E>, E: SystemApiError>(
self,
env: &mut Y,
) -> Result<ResourceManager, E>
fn create_with_no_initial_supply<Y: SystemApi<E>, E: SystemApiError>( self, env: &mut Y, ) -> Result<ResourceManager, E>
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more