pub struct ClojureEdnCodecLib { /* private fields */ }Expand description
Loadable Lib that registers the ClojureEdnCodec as a runtime codec object.
Exports a single Export::Codec under clojure_edn_reader_symbol and
installs it via the Linker when loaded.
§Examples
Load the codec and decode a small EDN form into the shared Expr graph:
use std::sync::Arc;
use sim_codec::{Input, decode_tree_with_codec};
use sim_kernel::{
CapabilitySet, Cx, DefaultFactory, Expr, NoopEvalPolicy, ReadPolicy, TrustLevel,
};
use sim_lib_lang_clojure::{ClojureEdnCodecLib, clojure_edn_reader_symbol};
let mut cx = Cx::new(Arc::new(NoopEvalPolicy), Arc::new(DefaultFactory));
let codec_id = cx.registry_mut().fresh_codec_id();
cx.load_lib(&ClojureEdnCodecLib::new(codec_id))?;
let policy = ReadPolicy {
trust: TrustLevel::TrustedSource,
capabilities: CapabilitySet::new(),
};
let tree = decode_tree_with_codec(
&mut cx,
&clojure_edn_reader_symbol(),
Input::Text("[1 2 3]".to_owned()),
policy,
"doc.edn",
)?;
assert!(matches!(tree.expr, Expr::Vector(_)));Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ClojureEdnCodecLib
impl RefUnwindSafe for ClojureEdnCodecLib
impl Send for ClojureEdnCodecLib
impl Sync for ClojureEdnCodecLib
impl Unpin for ClojureEdnCodecLib
impl UnsafeUnpin for ClojureEdnCodecLib
impl UnwindSafe for ClojureEdnCodecLib
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more