pub enum License {
Spdx(Box<Expression>),
Unknown(String),
}
Expand description
Represents a license expression that can be either a valid SPDX identifier or a non-standard one.
§Examples
use std::str::FromStr;
use alpm_types::License;
// Create License from a valid SPDX identifier
let license = License::from_str("MIT")?;
assert!(license.is_spdx());
assert_eq!(license.to_string(), "MIT");
// Create License from an invalid/non-SPDX identifier
let license = License::from_str("My-Custom-License")?;
assert!(!license.is_spdx());
assert_eq!(license.to_string(), "My-Custom-License");
Variants§
Implementations§
source§impl License
impl License
sourcepub fn new(license: String) -> Result<Self, Error>
pub fn new(license: String) -> Result<Self, Error>
Creates a new license
This function accepts both SPDX and non-standard identifiers
and it is the same as as calling License::from_str
sourcepub fn from_valid_spdx(identifier: String) -> Result<Self, Error>
pub fn from_valid_spdx(identifier: String) -> Result<Self, Error>
Creates a new license from a valid SPDX identifier
§Examples
use alpm_types::Error;
use alpm_types::License;
let license = License::from_valid_spdx("Apache-2.0".to_string())?;
assert!(license.is_spdx());
assert_eq!(license.to_string(), "Apache-2.0");
assert!(License::from_valid_spdx("GPL-0.0".to_string()).is_err());
assert!(License::from_valid_spdx("Custom-License".to_string()).is_err());
assert_eq!(
License::from_valid_spdx("GPL-2.0".to_string()),
Err(Error::DeprecatedLicense("GPL-2.0".to_string()))
);
§Errors
Returns an error if the given input cannot be parsed or is a deprecated license.
Trait Implementations§
source§impl FromStr for License
impl FromStr for License
source§fn from_str(s: &str) -> Result<Self, Self::Err>
fn from_str(s: &str) -> Result<Self, Self::Err>
Creates a new License
instance from a string slice.
If the input is a valid SPDX license expression, it will be marked as such; otherwise, it will be treated as a non-standard license identifier.
§Examples
use std::str::FromStr;
use alpm_types::License;
let license = License::from_str("Apache-2.0")?;
assert!(license.is_spdx());
assert_eq!(license.to_string(), "Apache-2.0");
let license = License::from_str("NonStandard-License")?;
assert!(!license.is_spdx());
assert_eq!(license.to_string(), "NonStandard-License");
§Errors
Returns an error if the given input is a deprecated SPDX license.
impl StructuralPartialEq for License
Auto Trait Implementations§
impl Freeze for License
impl RefUnwindSafe for License
impl Send for License
impl Sync for License
impl Unpin for License
impl UnwindSafe for License
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)