Crate oxsdatatypes

Source
Expand description

§oxsdatatypes

Latest Version Released API docs Crates.io downloads actions status Gitter

oxsdatatypes is an implementation of some XML Schema Definition Language Datatypes. Its main aim is to ease the implementation of SPARQL and XPath.

Usage example:

use std::str::FromStr;
use oxsdatatypes::Decimal;

assert!(Decimal::from_str("22.2").unwrap() > Decimal::from_str("21").unwrap());

Each datatype is represented by a Rust struct.

Each datatype provides:

  • FromStr implementation to parse a datatype string serialization following its lexical mapping.
  • Display implementation to serialize a datatype following its canonical mapping.
  • is_identical_with method following its identity relation.
  • PartialEq, and Eq if possible, implementations following its equality relation.
  • PartialOrd, and Ord if possible, implementations following its order relation.
  • From and TryFrom implementations to implement XPath casting.
  • Various methods implementing XPath functions.
  • from_be_bytes and to_be_bytes methods for serialization.

§DateTime::now behavior

The DateTime::now() function needs special OS support. Currently:

  • If the custom-now feature is enabled, a function computing now must be set:
    use oxsdatatypes::Duration;
    
    #[no_mangle]
    fn custom_ox_now() -> Duration {
      unimplemented!("now implementation")
    }
  • For wasm32-unknown-unknown if the js feature is enabled the Date.now() ECMAScript API is used.
  • For zkvm there is no access to IO functions so the function returns start of unix time (Jan 1, 1970)
  • For all other targets SystemTime::now() is used.

§License

This project is 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 Oxigraph by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Structs§

Boolean
XML Schema boolean datatype
Date
XML Schema date datatype
DateTime
XML Schema dateTime datatype
DateTimeOverflowError
An overflow during DateTime-related operations.
DayTimeDuration
XML Schema dayTimeDuration datatype
Decimal
XML Schema decimal datatype
Double
XML Schema double datatype
Duration
XML Schema duration datatype
DurationOverflowError
An overflow during Duration-related operations.
Float
XML Schema float datatype
GDay
XML Schema date datatype
GMonth
XML Schema gMonth datatype
GMonthDay
XML Schema gMonthDay datatype
GYear
XML Schema gYear datatype
GYearMonth
XML Schema gYearMonth datatype
Integer
XML Schema integer datatype
InvalidTimezoneError
The value provided as timezone is not valid.
OppositeSignInDurationComponentsError
The year-month and the day-time components of a Duration have an opposite sign.
ParseDateTimeError
A parsing error
ParseDecimalError
An error when parsing a Decimal.
ParseDurationError
A parsing error
Time
XML Schema time datatype
TimezoneOffset
A timezone offset with respect to UTC.
TooLargeForDecimalError
The input is too large to fit into a Decimal.
TooLargeForIntegerError
The input is too large to fit into an Integer.
YearMonthDuration
XML Schema yearMonthDuration datatype