bitcointx 0.0.15

Bitcoin TX utility crate
Documentation
use crate::{Serializable, VarInt};

#[derive(Clone)]
pub struct Script {
    script: Vec<u8>,
}

impl Script {
    pub fn new() -> Script {
        return Script { script: vec![] };
    }

    pub fn from_vec(v: Vec<u8>) -> Script {
        return Script { script: v };
    }

    pub fn iter(&self) -> std::slice::Iter<'_, u8> {
        return self.script.iter();
    }

    pub fn to_vec(&self) -> Vec<u8> {
        return self.script.clone();
    }
}

impl Serializable<Script> for Script {
    fn serialize(&self) -> Vec<u8> {
        let mut v = vec![];

        v.extend(VarInt::serialize(&self.script.len()));
        v.extend(self.script.clone());

        return v;
    }

    fn deserialize(cur: &mut [u8]) -> (Script, &mut [u8]) {
        let (len, cur) = VarInt::deserialize(cur);
        let (script, cur) = cur.split_at_mut(len);

        return (
            Script {
                script: script.to_vec(),
            },
            cur,
        );
    }
}