Collection
Basic contract is created for storing
ItemonCollectionstruct in vector form.Some of the function like
start_collection,exists_at,add_item,sizeanddestroyare called publicly in the contract.Scripts are also written for this contract.
module 0x12::Collection{
use std::vector;
use std::signer;
struct Item has store, drop{}
struct Collection has store, key{
items:vector<Item>
}
public fun start_collection(account: &signer){
move_to<Collection>(account,Collection{
items: vector::empty<Item>()
})
}
public fun exists_at(at: address): bool {
exists<Collection>(at)
}
public fun add_item(account: &signer) acquires Collection{
let addr = signer::address_of(account);
let collection = borrow_global_mut<Collection>(addr);
vector::push_back(&mut collection.items,Item{});
}
public fun size(account: &signer):u64 acquires Collection{
let addr = signer::address_of(account);
let collection = borrow_global_mut<Collection>(addr);
vector::length(& collection.items)
}
public fun destroy(account: &signer) acquires Collection{
let addr = signer::address_of(account);
let collection = move_from<Collection>(addr);
let Collection{items: _} = collection;
}
}Script of Collection contract:
Last updated