pub trait Inspect<AccountId> {
    type ItemId;

    // Required method
    fn owner(item: &Self::ItemId) -> Option<AccountId>;

    // Provided methods
    fn attribute(
        _item: &Self::ItemId,
        _namespace: &AttributeNamespace<AccountId>,
        _key: &[u8]
    ) -> Option<Vec<u8>> { ... }
    fn typed_attribute<K: Encode, V: Decode>(
        item: &Self::ItemId,
        namespace: &AttributeNamespace<AccountId>,
        key: &K
    ) -> Option<V> { ... }
    fn can_transfer(_item: &Self::ItemId) -> bool { ... }
}
Expand description

Trait for providing an interface to a read-only NFT-like item.

Required Associated Types§

source

type ItemId

Type for identifying an item.

Required Methods§

source

fn owner(item: &Self::ItemId) -> Option<AccountId>

Returns the owner of item, or None if the item doesn’t exist or has no owner.

Provided Methods§

source

fn attribute( _item: &Self::ItemId, _namespace: &AttributeNamespace<AccountId>, _key: &[u8] ) -> Option<Vec<u8>>

Returns the attribute value of item corresponding to key.

By default this is None; no attributes are defined.

source

fn typed_attribute<K: Encode, V: Decode>( item: &Self::ItemId, namespace: &AttributeNamespace<AccountId>, key: &K ) -> Option<V>

Returns the strongly-typed attribute value of item corresponding to key.

By default this just attempts to use attribute.

source

fn can_transfer(_item: &Self::ItemId) -> bool

Returns true if the item may be transferred.

Default implementation is that all items are transferable.

Implementors§

source§

impl<F: Inspect<AccountId>, A: Get<<F as Inspect<AccountId>>::CollectionId>, AccountId> Inspect<AccountId> for ItemOf<F, A, AccountId>

§

type ItemId = <F as Inspect<AccountId>>::ItemId