TextWriter::encode for Vec<u8>
This commit is contained in:
parent
e80d849f9a
commit
e913951b91
|
@ -16,14 +16,13 @@ use super::super::writer::{Writer, CompoundWriter, varint};
|
||||||
|
|
||||||
pub struct PackedWriter<W: io::Write>(Suspendable<W>);
|
pub struct PackedWriter<W: io::Write>(Suspendable<W>);
|
||||||
|
|
||||||
impl PackedWriter<Vec<u8>> {
|
impl PackedWriter<&mut Vec<u8>> {
|
||||||
pub fn encode<D: Embeddable, N: NestedValue<D>, Enc: DomainEncode<D>>(
|
pub fn encode<D: Embeddable, N: NestedValue<D>, Enc: DomainEncode<D>>(
|
||||||
enc: &mut Enc,
|
enc: &mut Enc,
|
||||||
v: &N,
|
v: &N,
|
||||||
) -> io::Result<Vec<u8>> {
|
) -> io::Result<Vec<u8>> {
|
||||||
let mut buf: Vec<u8> = Vec::new();
|
let mut buf: Vec<u8> = Vec::new();
|
||||||
let w = &mut PackedWriter::new(&mut buf);
|
PackedWriter::new(&mut buf).write(enc, v)?;
|
||||||
w.write(enc, v)?;
|
|
||||||
Ok(buf)
|
Ok(buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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::Writer;
|
||||||
use crate::value::suspendable::Suspendable;
|
use crate::value::suspendable::Suspendable;
|
||||||
use crate::value::writer::CompoundWriter;
|
use crate::value::writer::CompoundWriter;
|
||||||
|
@ -28,6 +33,21 @@ impl std::default::Default for CommaStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TextWriter<&mut Vec<u8>> {
|
||||||
|
pub fn encode<D: Embeddable, N: NestedValue<D>, Enc: DomainEncode<D>>(
|
||||||
|
enc: &mut Enc,
|
||||||
|
v: &N,
|
||||||
|
) -> io::Result<Vec<u8>> {
|
||||||
|
let mut buf: Vec<u8> = Vec::new();
|
||||||
|
TextWriter::new(&mut buf).write(enc, v)?;
|
||||||
|
Ok(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn encode_iovalue(v: &IOValue) -> io::Result<Vec<u8>> {
|
||||||
|
Self::encode(&mut IOValueDomainCodec, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<W: io::Write> TextWriter<W> {
|
impl<W: io::Write> TextWriter<W> {
|
||||||
pub fn new(w: W) -> Self {
|
pub fn new(w: W) -> Self {
|
||||||
TextWriter {
|
TextWriter {
|
||||||
|
|
Loading…
Reference in New Issue