Crate wolfram_wxf

Crate wolfram_wxf 

Source
Expand description

§Wolfram Exchange Format with Rust

§Design

To support format conversion, just implement the ToWolfram trait.

pub trait ToWolfram {
    fn to_wolfram(&self) -> WolframValue;
    fn to_wolfram_string(&self) -> String {self.to_wolfram().to_string()}
    fn to_wolfram_bytes(&self) -> Vec<u8> {self.to_wolfram().to_bytes()}
    fn to_wolfram_solid(&self) -> Vec<u8> {self.to_wolfram().to_compressed()}
}

WolframValue consists of the following legal elements:

pub enum WolframValue {
    /// Function with name, args
    Function(Box<str>, Vec<WolframValue>),
    String(Box<str>),
    Bytes(Vec<u8>),
    Symbol(Box<str>),
    Integer8(i8),
    Integer16(i16),
    Integer32(i32),
    Integer64(i64),
    BigInteger(BigInt),
    /// Do not use `f64`, because partial order cannot be defined
    Decimal64([u8; 8]),
    BigDecimal(Box<str>),
    /// Need to optimize
    PackedArray(Vec<WolframValue>),
    /// Need to optimize
    NumericArray(Vec<WolframValue>),
    /// Record with key, rule, value
    Association(BTreeMap<WolframValue, (WolframValue, WolframValue)>),
    Rule,
    RuleDelayed,
}

§Extension

Here are some common formats supported now:

pub enum SupportedFormat {
    JSON, //json
    TOML, //toml
    YAML, //yaml, yml
    Pickle, //pkl
}

Because rust cannot define traits and structs externally at the same time, supporting new formats needs to be done within this project.

See From Traits Extension to learn how to support new format

§Tools

  • wex: A command line tool that can convert wxf format

Structs§

ReadableWriter
A serializer for the Wolfram Language.
WolframFunction
f[x, y, z, …]
WolframPair
A WolframValue is a value that can be converted to a WolframValue
WolframSerializer
A serializer for the Wolfram Language.
WolframSymbol
A symbol in the Wolfram Language.

Enums§

WolframArray
A WolframArray is a value that can be converted to a WolframValue
WolframError
All Errors that can occur in the Wolfram-Lib
WolframRule
A WolframRule is a rule that can be converted to a WolframValue
WolframValue
A WolframValue is a value that can be converted to a WolframValue

Constants§

SYSTEM_SYMBOLS
13.1.0 for Microsoft Windows (64-bit) (November 6, 2021)

Traits§

ToWolfram
The WolframLib struct is the main entry point for the library.

Functions§

date_object
Constructs a DateObject from a string.

Type Aliases§

Result
Result type for error handling.