libhaystack/haystack/encoding/zinc/decode/value.rs
1// Copyright (C) 2020 - 2022, J2 Innovations
2
3//! Zinc Value decoding
4use super::parser::Parser;
5use crate::haystack::val::Value;
6use std::io::{Cursor, Error};
7
8/// Utility function for parsing haystack [Value](crate::val::value::Value) from a `&str`
9///
10/// # Example
11/// ```
12/// use libhaystack::val::uri::*;
13/// use libhaystack::encoding::zinc::decode::*;
14///
15/// let val = from_str("`/a/sample/uri`").expect("A Value");
16/// assert!(&val.is_uri());
17///
18/// assert_eq!(Uri::try_from(&val).unwrap().value, "/a/sample/uri");
19/// ```
20pub fn from_str(str: &str) -> Result<Value, Error> {
21 let mut input = Cursor::new(str.as_bytes());
22 let mut parser = Parser::make(&mut input)?;
23 parser.parse_value()
24}