pub struct AbiRange(/* private fields */);Expand description
A semver range expressing which ABI majors this plugin supports.
Stored as the original requirement string so manifests round-trip
losslessly through serialization. Use AbiRange::matches to test
against a host major.
§Examples
use uni_plugin::AbiRange;
let r = AbiRange::parse("^1.2").unwrap();
assert!(r.matches(1));
assert!(!r.matches(2));Implementations§
Source§impl AbiRange
impl AbiRange
Sourcepub fn parse(s: impl AsRef<str>) -> Result<Self, PluginError>
pub fn parse(s: impl AsRef<str>) -> Result<Self, PluginError>
Parse an ABI range from a semver requirement string.
§Errors
Returns PluginError::ManifestParse if the input is not a valid
semver VersionReq.
Sourcepub fn matches(&self, host_major: u64) -> bool
pub fn matches(&self, host_major: u64) -> bool
Check whether a host ABI major satisfies this range.
The check passes if any version with major == host_major falls
within the requirement. We probe with a high minor / patch so that
ranges like ^1.2 (which excludes 1.0.0) still recognize the
host’s major as compatible.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for AbiRange
impl<'de> Deserialize<'de> for AbiRange
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for AbiRange
impl StructuralPartialEq for AbiRange
Auto Trait Implementations§
impl Freeze for AbiRange
impl RefUnwindSafe for AbiRange
impl Send for AbiRange
impl Sync for AbiRange
impl Unpin for AbiRange
impl UnsafeUnpin for AbiRange
impl UnwindSafe for AbiRange
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more