substrate_stellar_sdk/xdr/impls/
asset.rs1use core::convert::AsRef;
2
3use crate::{
4 types::{AlphaNum12, AlphaNum4},
5 Asset, AssetCode, IntoAccountId, StellarSdkError,
6};
7
8impl Asset {
9 pub fn native() -> Self {
10 Asset::AssetTypeNative
11 }
12
13 pub fn from_asset_code<T: AsRef<[u8]>, S: IntoAccountId>(
14 asset_code: T,
15 issuer: S,
16 ) -> Result<Self, StellarSdkError> {
17 let asset_code = AssetCode::new(asset_code)?;
18
19 match asset_code {
20 AssetCode::AssetTypeCreditAlphanum4(asset_code) =>
21 Ok(Self::AssetTypeCreditAlphanum4(AlphaNum4 { asset_code, issuer: issuer.into_account_id()? })),
22 AssetCode::AssetTypeCreditAlphanum12(asset_code) =>
23 Ok(Self::AssetTypeCreditAlphanum12(AlphaNum12 { asset_code, issuer: issuer.into_account_id()? })),
24 AssetCode::Default(_) => unreachable!(),
25 }
26 }
27}