pub trait Encode {
// Required method
fn encode(&self, buf: &mut Vec<u8>);
// Provided method
fn stringify(&self) -> String { ... }
}
Expand description
Encode Trait
This trait is used for formatting a field’s value. Encoding support has already been added for all scalar types and many standard collections. If you wish to format your own type, just implement this trait.
pub struct CustomStruct {
pub key1: i32,
pub key2: bool,
pub key3: String,
}
impl logkit::Encode for CustomStruct {
#[inline]
fn encode(&self, buf: &mut Vec<u8>) {
// format your struct into buf
unimplemented!()
}
}
The Encode Trait
Required Methods§
Provided Methods§
Implementations on Foreign Types§
Source§impl Encode for &str
Encode Str
impl Encode for &str
Encode Str
use encoder::json::Encode;
assert_eq!("Hello".stringify(), r#""Hello""#);
assert_eq!("Bonjour".stringify(), r#""Bonjour""#);
assert_eq!("你好".stringify(), r#""你好""#);
assert_eq!("こんにちは".stringify(), r#""こんにちは""#);
assert_eq!("สวัสดี".stringify(), r#""สวัสดี""#);
let mut buf = vec![];
"Hello".encode(&mut buf);
"Bonjour".encode(&mut buf);
"你好".encode(&mut buf);
"こんにちは".encode(&mut buf);
"สวัสดี".encode(&mut buf);
assert_eq!(String::from_utf8_lossy(&buf), r#""Hello""Bonjour""你好""こんにちは""สวัสดี""#);
Source§impl Encode for Option<&dyn Encode>
Encode Option 2
impl Encode for Option<&dyn Encode>
Encode Option 2
use encoder::json::Encode;
let mut buf = vec![];
let mut opt: Option<&dyn Encode> = Some(&1);
opt.encode(&mut buf);
opt = None;
opt.encode(&mut buf);
assert_eq!(opt.stringify(), r#"null"#);
assert_eq!(String::from_utf8_lossy(&buf), r#"1null"#);
Source§impl Encode for char
Encode Char
impl Encode for char
Encode Char
use encoder::json::Encode;
assert_eq!('a'.stringify(), r#""a""#);
assert_eq!('b'.stringify(), r#""b""#);
assert_eq!('c'.stringify(), r#""c""#);
let mut buf = vec![];
'a'.encode(&mut buf);
'b'.encode(&mut buf);
'c'.encode(&mut buf);
assert_eq!(String::from_utf8_lossy(&buf), r#""a""b""c""#);
Source§impl Encode for String
Encode String
impl Encode for String
Encode String
use encoder::json::Encode;
assert_eq!(String::from("\"\\/\n\r\t").stringify(), r#""\"\\/\n\r\t""#);
let mut buf = vec![];
String::from("\"\\/\n\r\t").encode(&mut buf);
assert_eq!(String::from_utf8_lossy(&buf), r#""\"\\/\n\r\t""#);
Source§impl<T> Encode for Option<T>where
T: Encode,
Encode Option 1
impl<T> Encode for Option<T>where
T: Encode,
Encode Option 1
use encoder::json::Encode;
let mut buf = vec![];
let mut opt = Some(1);
opt.encode(&mut buf);
opt = None;
opt.encode(&mut buf);
assert_eq!(opt.stringify(), r#"null"#);
assert_eq!(String::from_utf8_lossy(&buf), r#"1null"#);