#php #parser #serialization

muesli

healthy implementation of PHP's serialization and session formats in Rust

2 releases

0.0.2 Sep 21, 2024
0.0.1 Sep 21, 2024

#683 in Parser implementations

Download history 334/week @ 2024-09-16 55/week @ 2024-09-23 24/week @ 2024-09-30

413 downloads per month

MIT license

125KB
1K SLoC

a lively bowl of muesli

muesli

healthy implementation of PHP's serialization and session formats in Rust

Made With Rust Crates.io Docs.rs

muesli is Rust implementation of PHP's serialize(), unserialize(), session_encode(), and session_decode() functions.

Installation

Add this to your Cargo.toml:

[dependencies]
muesli = "0.0.2"

or run:

cargo add muesli

Usage

use muesli::{session_encode, SessionEntry, Value};

fn main() {
    let data = vec![
        SessionEntry {
            key: b"foo",
            value: Value::Integer(42),
        },
        SessionEntry {
            key: b"bar",
            value: Value::String(b"baz|qux".as_slice()),
        },
        SessionEntry {
            key: b"pub",
            value: Value::Integer(1337),
        },
    ];

    let mut session = Vec::<u8>::new();
    session_encode(&mut session, &data).unwrap();
    assert_eq!(session, b"foo|i:42;bar|s:7:\"baz|qux\";pub|i:1337;".as_slice());
}

Rust Version Compatibility

Compiler support: requires rustc 1.79.0+

Development

An automated development environment is provided through devenv tool. It's the preferred way to work on muesli.

Main development loop

The devenv shell provides the devloop command that run linters, tests and build command on files changes:

devloop

Dependencies

~1MB
~19K SLoC