| Crates.io | math-symbols |
| lib.rs | math-symbols |
| version | 0.2.1 |
| created_at | 2023-06-23 07:49:26.098445+00 |
| updated_at | 2025-12-23 09:35:31.678085+00 |
| description | Symbols for computer algebra |
| homepage | |
| repository | https://github.com/a-maier/math-symbols |
| max_upload_size | |
| id | 898083 |
| size | 18,245 |
Named symbols for use in compute algebra systems. Symbol names are stored centrally such that copies are cheap and need little memory.
use math_symbols::*;
// Define a number of symbols with variable name equal to symbol name
symbols!(x, y, z);
assert_eq!(x.name(), "x");
assert_eq!(y.name(), "y");
assert_eq!(z.name(), "z");
// Symbols are identified by their names
let xx = Symbol::new("x");
assert_eq!(x, xx);
// Symbols are ordered by their creation time
assert!(x < y);
// We can generate symbol names dynamically. The allocated
// memory will be leaked if and only if a new symbol has to be created.
for i in 0..5 {
// leaks memory
let xi = Symbol::new(format!("x{i}"));
}
for i in 0..5 {
// does not leak any additional memory
let xi = Symbol::new(format!("x{i}"));
}
serde adds support for (de)serialisation with
serdeu32. Hence,
the total number of symbols is limited to 2^32. The features u8, u16, u64, u128, usize enable symbols Symbolu8, Symbolu16, Symbolu64, Symbolu128, Symbolusize, and macros symbols_u8, symbols_u16, symbols_u64, symbols_u128, symbols_usize for the
corresponding storage type.License: GPL-3.0-or-later