Skip to main content

ObjectCodec

Struct ObjectCodec 

Source
pub struct ObjectCodec { /* private fields */ }
Expand description

Codec for encoding/decoding LinoValue to/from Links Notation.

This codec handles the conversion between LinoValue and Links Notation format strings. It supports circular references and shared object identity through object ID references.

Implementations§

Source§

impl ObjectCodec

Source

pub fn new() -> Self

Create a new ObjectCodec instance.

Source

pub fn encode(&mut self, value: &LinoValue) -> String

Encode a LinoValue to the readable, indented Links Notation format.

This is the default representation: keys and values are written as plain text, one per line, so the result can be read and reviewed directly. See readable for the exact shape.

§Arguments
  • value - The value to encode
§Returns

A string in readable Links Notation format

Source

pub fn encode_with_indent(&mut self, value: &LinoValue, indent: &str) -> String

Encode a LinoValue to the readable format using a custom indentation string.

§Arguments
  • value - The value to encode
  • indent - The indentation string used per nesting level (for example " ")
Source

pub fn encode_line(&mut self, value: &LinoValue) -> String

Encode a LinoValue to the readable, single-line Links Notation format.

The document is written as plain text on one line, so one value is one line of an append-only log: appending is a single write, grep, tail -f and wc -l keep working, and a compactor can cut at any newline without splitting a record. See readable for the exact shape.

§Arguments
  • value - The value to encode
§Returns

A string in readable Links Notation format, containing no newline

Source

pub fn encode_compact(&mut self, value: &LinoValue) -> String

Encode a LinoValue to the compact, single-line Links Notation format.

Every value is tagged with its type and every string is base64-encoded, so the whole document fits on one line and carries no readable text. This was the default before the readable format; callers now opt into it explicitly.

§Arguments
  • value - The value to encode
§Returns

A string in compact Links Notation format

Source

pub fn encode_obfuscated(&mut self, value: &LinoValue) -> String

Encode a LinoValue to the compact, base64 form.

Alias of ObjectCodec::encode_compact, named after what the form does to its content: nothing in the output can be read without decoding it.

Source

pub fn decode(&mut self, notation: &str) -> Result<LinoValue, CodecError>

Decode Links Notation format to a LinoValue.

§Arguments
  • notation - String in Links Notation format
§Returns

The reconstructed value, or an error

Both the readable format and the compact (base64) format are accepted, so files written by earlier versions keep working and migrate on next write.

Source

pub fn decode_line(&mut self, notation: &str) -> Result<LinoValue, CodecError>

Decode the readable, single-line Links Notation format.

This is the exact inverse of ObjectCodec::encode_line. A document spanning more than one line is rejected, so a reader that hands over one record at a time cannot silently merge two records into one value.

§Arguments
  • notation - One line in readable Links Notation format
§Returns

The reconstructed value, or an error

Source

pub fn decode_compact( &mut self, notation: &str, ) -> Result<LinoValue, CodecError>

Decode the compact (base64) Links Notation format.

§Arguments
  • notation - String in compact Links Notation format
§Returns

The reconstructed value, or an error

Trait Implementations§

Source§

impl Default for ObjectCodec

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.