Usage
use spdx::Expression;
fn main() {
let this_is_fine = Expression::parse("MIT OR Apache-2.0").unwrap();
assert!(this_is_fine.evaluate(|req| {
if let spdx::LicenseItem::Spdx { id, .. } = req.license {
return id.is_osi_approved();
}
false
}));
assert!(!this_is_fine.evaluate(|req| {
if let spdx::LicenseItem::Spdx { id, .. } = req.license {
return !id.is_osi_approved();
}
false
}));
let _this_is_not = Expression::parse("MIT OR NOPE").unwrap_err();
}
Updating SPDX list
You can update the list of SPDX identifiers for licenses and exceptions by running the update program cargo run --manifest-path=update/Cargo.toml -- v3.6 where v3.6 is the tag in the SPDX data repo.
Contributing

We welcome community contributions to this project.
Please read our Contributor Guide for more information on how to get started.
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.