whisky-common 1.0.25

The Cardano Rust SDK, inspired by MeshJS
Documentation
use schemars::JsonSchema;

#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct Asset {
    unit: String,
    quantity: String,
}

impl Asset {
    pub fn unit_to_tuple(unit: &str) -> (String, String) {
        let unit = if unit == "lovelace" {
            "".to_string()
        } else {
            unit.to_string()
        };
        let policy = unit.chars().take(56).collect();
        let name = unit.chars().skip(56).collect();
        (policy, name)
    }
    pub fn new(unit: String, quantity: String) -> Self {
        Asset { unit, quantity }
    }
    pub fn new_from_str(unit: &str, quantity: &str) -> Self {
        Asset {
            unit: unit.to_string(),
            quantity: quantity.to_string(),
        }
    }
    pub fn unit(&self) -> String {
        self.unit.clone()
    }
    pub fn policy(&self) -> String {
        self.unit.chars().take(56).collect()
    }
    pub fn name(&self) -> String {
        self.unit.chars().skip(56).collect()
    }
    pub fn quantity(&self) -> String {
        self.quantity.clone()
    }
    pub fn quantity_i128(&self) -> i128 {
        self.quantity.parse().unwrap()
    }
}