diff --git a/implementations/rust/preserves/src/value/packed/writer.rs b/implementations/rust/preserves/src/value/packed/writer.rs index 64be487..810a529 100644 --- a/implementations/rust/preserves/src/value/packed/writer.rs +++ b/implementations/rust/preserves/src/value/packed/writer.rs @@ -16,14 +16,13 @@ use super::super::writer::{Writer, CompoundWriter, varint}; pub struct PackedWriter(Suspendable); -impl PackedWriter> { +impl PackedWriter<&mut Vec> { pub fn encode, Enc: DomainEncode>( enc: &mut Enc, v: &N, ) -> io::Result> { let mut buf: Vec = Vec::new(); - let w = &mut PackedWriter::new(&mut buf); - w.write(enc, v)?; + PackedWriter::new(&mut buf).write(enc, v)?; Ok(buf) } diff --git a/implementations/rust/preserves/src/value/text/writer.rs b/implementations/rust/preserves/src/value/text/writer.rs index ae2bc4f..401889d 100644 --- a/implementations/rust/preserves/src/value/text/writer.rs +++ b/implementations/rust/preserves/src/value/text/writer.rs @@ -1,3 +1,8 @@ +use crate::value::DomainEncode; +use crate::value::Embeddable; +use crate::value::IOValue; +use crate::value::IOValueDomainCodec; +use crate::value::NestedValue; use crate::value::Writer; use crate::value::suspendable::Suspendable; use crate::value::writer::CompoundWriter; @@ -28,6 +33,21 @@ impl std::default::Default for CommaStyle { } } +impl TextWriter<&mut Vec> { + pub fn encode, Enc: DomainEncode>( + enc: &mut Enc, + v: &N, + ) -> io::Result> { + let mut buf: Vec = Vec::new(); + TextWriter::new(&mut buf).write(enc, v)?; + Ok(buf) + } + + pub fn encode_iovalue(v: &IOValue) -> io::Result> { + Self::encode(&mut IOValueDomainCodec, v) + } +} + impl TextWriter { pub fn new(w: W) -> Self { TextWriter {