#identifier #reference #parse

arxiv

Rust library to parse arXiv identifiers and references

2 unstable releases

0.2.0 Apr 29, 2023
0.1.0 Mar 28, 2023

#1803 in Parser implementations

Download history 102/week @ 2024-07-27

102 downloads per month

MIT/Apache

34KB
728 lines

arXiv

License docs.rs CI Security audit codecov

A Rust library for parsing arXiv categories, identifiers and references.

Install

Run the following command in the terminal:

cargo add arxiv

Or, add this to Cargo.toml:

[dependencies]
arxiv = "0.2"

Usage

use std::str::FromStr;
use arxiv::*;

// Parse an arXiv identifier
let id = ArxivId::from_str("arXiv:9912.12345v2").unwrap();
assert_eq!(id.month(), 12);
assert_eq!(id.year(), 2099);
assert_eq!(id.number(), "12345");
assert_eq!(id.version(), Some(2));

// Parse an arXiv category
let category = ArxivCategoryId::from_str("astro-ph.HE").unwrap();
assert_eq!(category.group(), ArxivGroup::Physics);
assert_eq!(category.archive(), ArxivArchive::AstroPh);
assert_eq!(category.subject(), String::from("HE"));

// Parse an arXiv stamp
let stamp = ArxivStamp::from_str("arXiv:0706.0001v1 [q-bio.CB] 1 Jun 2007").unwrap();
assert_eq!(stamp.category(), Some(&ArxivCategoryId::try_new(ArxivArchive::QBio, "CB").unwrap()));
assert_eq!(stamp.submitted().year(), 2007);

License

Licensed under either of

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

~745KB
~13K SLoC