feat: to_cbor and to_hex for Program

This commit is contained in:
rvcas 2022-08-03 17:15:57 -04:00 committed by Lucas
parent beaeeb26fc
commit 8e8f1270b5
3 changed files with 30 additions and 2 deletions

21
Cargo.lock generated
View File

@ -213,6 +213,26 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "minicbor"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a20020e8e2d1881d8736f64011bb5ff99f1db9947ce3089706945c8915695cb"
dependencies = [
"minicbor-derive",
]
[[package]]
name = "minicbor-derive"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8608fb1c805b5b6b3d5ab7bd95c40c396df622b64d77b2d621a5eae1eed050ee"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "num-traits"
version = "0.2.15"
@ -512,6 +532,7 @@ version = "0.0.6"
dependencies = [
"flat-rs",
"hex",
"minicbor",
"peg",
"pretty",
"proptest",

View File

@ -15,6 +15,7 @@ exclude = ["test_data/*"]
[dependencies]
flat-rs = { path = "../flat", version = "0.0.6" }
hex = "0.4.3"
minicbor = { version = "0.18.0", features = ["std"] }
peg = "0.8.0"
pretty = "0.11.3"
thiserror = "1.0.31"

View File

@ -33,8 +33,14 @@ where
self.flat()
}
pub fn flat_hex(&self) -> Result<String, en::Error> {
let bytes = self.flat()?;
pub fn to_cbor(&self) -> Result<Vec<u8>, en::Error> {
let flat_bytes = self.flat()?;
minicbor::to_vec(&flat_bytes).map_err(|err| en::Error::Message(err.to_string()))
}
pub fn to_hex(&self) -> Result<String, en::Error> {
let bytes = self.to_cbor()?;
let hex = hex::encode(&bytes);