[][src]Struct spdx::expression::Expression

pub struct Expression { /* fields omitted */ }

An SPDX license expression that is both syntactically and semantically valid, and can be evaluated

Methods

impl Expression[src]

pub fn requirements(&self) -> impl Iterator<Item = &ExpressionReq>[src]

Returns each of the license requirements in the license expression, but not the operators that join them together

pub fn evaluate<AF: FnMut(&LicenseReq) -> bool>(&self, allow_func: AF) -> bool[src]

Evaluates the expression, using the provided function to determine if the licensee meets the requirements for each license term. If enough requirements are satisfied the evaluation will return true.

pub fn evaluate_with_failures<AF: FnMut(&LicenseReq) -> bool>(
    &self,
    allow_func: AF
) -> Result<(), Vec<&ExpressionReq>>
[src]

Just as with evaluate, the license expression is evaluated to see if enough license requirements in the expresssion are met for the evaluation to succeed, except this method also keeps track of each failed requirement and returns them, allowing for more detailed error reporting about precisely what terms in the expression caused the overall failure

impl Expression[src]

pub fn parse(original: &str) -> Result<Self, ParseError>[src]

Given a license expression, attempts to parse and validate it as a valid SPDX expression

The validation can fail for many reasons:

  • The expression contains invalid characters
  • An unknown/invalid license or exception identifier was found. Only SPDX short identifiers are allowed
  • The expression contained unbalanced parentheses
  • A license or exception immediately follows another license or exception, without a valid AND, OR, or WITH operator separating them
  • An AND, OR, or WITH doesn't have a license or ) preceding it

Trait Implementations

impl AsRef<str> for Expression[src]

impl Clone for Expression[src]

impl PartialEq<Expression> for Expression[src]

impl Display for Expression[src]

impl Debug for Expression[src]

Auto Trait Implementations

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]