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,
);
}
}