From e913951b9149607453c13682d7a54d81d59b05f9 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 2 Aug 2021 21:49:40 +0200 Subject: [PATCH] TextWriter::encode for Vec --- .../rust/preserves/src/value/packed/writer.rs | 5 ++--- .../rust/preserves/src/value/text/writer.rs | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) 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 {