Struct sise::Serializer
source · [−]pub struct Serializer<'a, 'b> { /* private fields */ }
Expand description
Serializes into a possibly multi-line string.
Example
Compact (single line) example:
let style = sise::SerializerStyle {
line_break: "\n",
indentation: " ",
};
let mut result = String::new();
let mut serializer = sise::Serializer::new(style, &mut result);
serializer.begin_list(usize::MAX);
serializer.put_atom("example", usize::MAX);
serializer.begin_list(usize::MAX);
serializer.put_atom("1", usize::MAX);
serializer.put_atom("2", usize::MAX);
serializer.put_atom("3", usize::MAX);
serializer.end_list();
serializer.begin_list(usize::MAX);
serializer.put_atom("a", usize::MAX);
serializer.put_atom("b", usize::MAX);
serializer.put_atom("c", usize::MAX);
serializer.end_list();
serializer.end_list();
serializer.finish(false);
let expected_result = "(example (1 2 3) (a b c))";
assert_eq!(result, expected_result);
Full multi-line example:
let style = sise::SerializerStyle {
line_break: "\n",
indentation: " ",
};
let mut result = String::new();
let mut serializer = sise::Serializer::new(style, &mut result);
serializer.begin_list(usize::MAX);
serializer.put_atom("example", 0);
serializer.begin_list(0);
serializer.put_atom("1", 0);
serializer.put_atom("2", 0);
serializer.put_atom("3", 0);
serializer.end_list();
serializer.begin_list(0);
serializer.put_atom("a", 0);
serializer.put_atom("b", 0);
serializer.put_atom("c", 0);
serializer.end_list();
serializer.end_list();
serializer.finish(true);
let expected_result = "(\n example\n (\n 1\n 2\n 3\n )\n (\n a\n b\n c\n )\n)\n";
assert_eq!(result, expected_result);
You can write specified nodes in a single line:
let style = sise::SerializerStyle {
line_break: "\n",
indentation: " ",
};
let mut result = String::new();
let mut serializer = sise::Serializer::new(style, &mut result);
serializer.begin_list(0);
serializer.put_atom("example", usize::MAX);
serializer.begin_list(0);
// Write the three atoms in a single line.
serializer.put_atom("1", usize::MAX);
serializer.put_atom("2", usize::MAX);
serializer.put_atom("3", usize::MAX);
serializer.end_list();
serializer.begin_list(0);
// Write the three atoms in a single line.
serializer.put_atom("a", usize::MAX);
serializer.put_atom("b", usize::MAX);
serializer.put_atom("c", usize::MAX);
serializer.end_list();
serializer.end_list();
serializer.finish(true);
let expected_result = "(example\n (1 2 3)\n (a b c)\n)\n";
assert_eq!(result, expected_result);
Implementations
sourceimpl<'a, 'b> Serializer<'a, 'b>
impl<'a, 'b> Serializer<'a, 'b>
Auto Trait Implementations
impl<'a, 'b> RefUnwindSafe for Serializer<'a, 'b>
impl<'a, 'b> Send for Serializer<'a, 'b>
impl<'a, 'b> Sync for Serializer<'a, 'b>
impl<'a, 'b> Unpin for Serializer<'a, 'b>
impl<'a, 'b> !UnwindSafe for Serializer<'a, 'b>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more