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§
- Readable
Writer - A serializer for the Wolfram Language.
- Wolfram
Function - f[x, y, z, …]
- Wolfram
Pair - A
WolframValueis a value that can be converted to aWolframValue - Wolfram
Serializer - A serializer for the Wolfram Language.
- Wolfram
Symbol - A symbol in the Wolfram Language.
Enums§
- Wolfram
Array - A
WolframArrayis a value that can be converted to aWolframValue - Wolfram
Error - All Errors that can occur in the Wolfram-Lib
- Wolfram
Rule - A
WolframRuleis a rule that can be converted to aWolframValue - Wolfram
Value - A
WolframValueis a value that can be converted to aWolframValue
Constants§
- SYSTEM_
SYMBOLS - 13.1.0 for Microsoft Windows (64-bit) (November 6, 2021)
Traits§
- ToWolfram
- The
WolframLibstruct 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.