37 releases
0.9.6 | Sep 18, 2024 |
---|---|
0.9.5 | Jul 19, 2024 |
0.9.4 | May 13, 2024 |
0.9.2 |
|
0.2.0 | Feb 24, 2022 |
#140 in Data structures
3,624 downloads per month
Used in 51 crates
(17 directly)
460KB
14K
SLoC
XSD Types for Rust
This crate aims at providing safe representations of XSD built-in data types.
Usage
For each XSD datatype, this library provides two families of types:
one representing the lexical space of the datatype (see the lexical
module), and one representing the value space of the datatype (see the
value
module).
For instance, assume we wish to store the lexical representation of an
XSD decimal datatype value. We can use the
lexical::Decimal
type (or its owned variant, lexical::DecimalBuf
)
let string = "3.141592653589793";
// Parse the lexical representation (lexical domain).
let lexical_repr = xsd_types::lexical::Decimal::new(string).unwrap();
// Interprets the lexical representation (value domain).
use xsd_types::lexical::LexicalFormOf;
let value_repr: xsd_types::Decimal = lexical_repr.try_as_value().unwrap();
Of course it is possible to parse the value directly into the value domain
using FromStr
:
let value_repr: xsd_types::Decimal = "3.141592653589793".parse().unwrap();
Any value
The Value
type provides a simple way to represent any XSD value.
use xsd_types::{XSD_DATE, Datatype, Value};
let dt = Datatype::from_iri(XSD_DATE).unwrap();
let value: Value = dt.parse("1758-12-25").unwrap(); // Halley is back!
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~6MB
~119K SLoC