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_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_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 = Infallible

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.