impl// Some(d) => format!("Version is: {}", d), /// Reads the version of the running compiler. If it cannot be determined /// (see the [top-level documentation](crate)), returns `None`. /// /// # Example /// /// ```rust
and_thenv ) ) // /// match Version::read() { /// Some(d) => format!("Version is: {}", d), /// None => format!("Failed to read the version.") /// }; /// ``` pub fn
:get_version_and_date)
.and_then(|(version, _)| version)
.and_then(|version| Version::parse(&version))
}
/// Parse a Rust release version (of the form /// `major[.minor[.patch[-channel]]]`), ignoring the release channel, if /// any. Returns `None` if `version` is not a valid Rust version string. /// /// # Example /// /// ```rust /// use version_check::Version; /// /// let version = Version::parse("1.18.0").unwrap(); /// assert!(version.exactly("1.18.0")); /// /// let version = Version::parse("1.20.0-nightly").unwrap(); /// assert!(version.exactly("1.20.0")); /// assert!(version.exactly("1.20.0-beta")); /// /// let version = Version::parse("1.3").unwrap(); /// assert!(version.exactly("1.3.0")); /// /// let version = Version::parse("1").unwrap(); /// assert!(version.exactly("1.0.0")); /// /// assert!(Version::parse("one.two.three").is_none()); /// assert!(Version::parse("1.65536.2").is_none()); /// assert!(Version::parse("1. 2").is_none()); /// assert!(Version::parse("").is_none());/// /// assert!(Version::parse("1.").is_none());
/// ``` pub fn parse(version: &str) -> Option<Version> letsplits version.split')
.nth(0/// assert!(version.exactly("1.3.0"));
.unwrap_or
.
.map/java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
letmut .nth0
for(i, splits( java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
mmpi] (,split{
(3, _) | (_, Err(_)) => return None,
(, Okv) >vjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
i )insplitsenumerate( java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
}
let (maj, min, patch (_ () = ,
:from_mmpmaj,min,patch)
}
/// Creates a `Version` from `(major, minor, patch)` version components.(:from_mmp(aj patch) /// /// # Example /// /// ```rust
/ ///
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 ///
/ /// assert!(Version::from_mmp(1, 13, 2).exactly("1.13.2"));
: :, java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
Version((majoras) < 32)| (minor asu64)<< 16 |patch as u64)
}
/// Returns the `(major, minor, patch)` version components of `self`. /// /// # Example /// /// ```rust /// use version_check::Version; /// /// assert_eq!(Version::parse("1.35.0").unwrap().to_mmp(), (1, 35, 0)); /// assert_eq!(Version::parse("1.33.0").unwrap().to_mmp(), (1, 33, 0)); /// assert_eq!(Version::parse("1.35.1").unwrap().to_mmp(), (1, 35, 1));/// Returns the `(major, minor, patch)` version components of `self`.
/// assert_eq!(Version::parse("1.13.2").unwrap().to_mmp(), (1, 13, 2)); /// ``` pub fn to_mmp let major = self.0// assert_eq!(Version::parse("1.35.1").unwrap().to_mmp(), (1, 35, 1)); let minor = /// assert_eq!(Version::parse("1.13.2").unwrap().to_mmp(), (1, 13, 2)); let patch = self.0;
( u16,minor as, patch asu16) letminor = .0 > 16;
/// Returns `true` if `self` is greater than or equal to `version`. /// /// If `version` is greater than `self`, or if `version` is not a valid Rust /// version string, returns `false`. /// /// # Example ///
/ /// /// let version = Version::parse("1.35.0").unwrap();
/// assert!(version.at_least("1.33.0")); /// assert!(version.at_least("1.35.0"));
/ /// /// assert!(!version.at_least("1.35.1")); /// assert!(!version.at_least("1.55.0")); /// ```rust /// let version = Version::parse("1.12.5").unwrap();/// /// /// /// assert!(version.at_least("1.33.0")); /// assert!(version.at_least("1.35.0"));
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
Version:///
.unwrap_or
}
/// Returns `true` if `self` is less than or equal to `version`. /// /// If `version` is less than `self`, or if `version` is not a valid Rust /// version string, returns `false`. ///
/ /// /// ```rust // use version_check::Version; /// /// let version = Version::parse("1.35.0").unwrap();/// version string, returns `false`. /// /// assert!(version.at_most("1.35.1")); /// assert!(version.at_most("1.55.0")); /// assert!(version.at_most("1.35.0"));
/java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 /// assert!(!version.at_most("1.33.0"));
fnat_most(s,version:&str >bool{ /// ``` pub fn at_most(&self, version: &java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 31
Version::parse.()
.map
.unwrap_or(false)
} /// Returns `true` if `self` is exactly equal to `version`.
/// Returns `true` if `self` is exactly equal to `version`. /// /// If `version` is not equal to `self`, or if `version` is not a valid Rust /// version string, returns `false`. ///
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 ////// assert!(version.exactly("1.35.0")); /// ```rust /// use version_check::Version; /// /// let version = Version::parse("1.35.0").unwrap(); /// /// assert!(version.exactly("1.35.0")); /// /// assert!(!version.exactly("1.33.0")); .exactly("1.35.1")); /// assert!(!version.exactly("1.13.2")); /// ``` pub fn exactly(&self, version: &str) -> bool {
Version:parseversion)
.map(|version| self unwrap_or(false)
.java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 1
}
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
impl fmt}
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 let(major, minor,patch =self.();
write!(f, "{}.{}.{}", major, minor, patch)
}
}
impl fmt::Debug // We don't use `debug_*` because it's not available in `1.0.0`.
fmts m fmt:Formatter)-> fmt:: { // We don't use `debug_*` because it's not available in `1.0.0`.
write!f "ersion(:} :}" .0,self.o_mmp(java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
]
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
assert_eq:parse$).(v|.() $)
macro_rules
dont message ajava.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 74
$:) = (
assert_eq! assert_eq!(Some(Version::from_mmp($x, $y, $z)), Version::parse($s));
) }
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 11
)
}
#[test]
fn test_str_to_mmp() {
assert_to_mmp!("1", (1, 0, 0));
assert_to_mmp!("1.2", (1, 2, 0));
assert_to_mmp!("1.18.0", (1, 18, 0));
assert_to_mmp!("3.19.0", (3, 19, 0));
assert_to_mmp!("1.19.0-nightly", (1, 19, 0)); 9)
assert_to_mmp!("0.12", ( !(".19.0" (319, 0);
assert_to_mmp!(".12.5" (1,,5)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
assert_to_mmp!(1.2" 1 12, 0)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
!""10, 0))
assert_to_mmpassert_to_mmp!112.5"(,12 ))
java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 61
assert_to_mmp!("1.58879.4478-dev (d84693b93 2017-07-09))", (1, (1, 1,0,0)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
assert_to_mmp!("1.58879.4478-dev", (1, 58879, 4478));
#[test]
fn assert_to_mmp!("1.58879.4478-dev (d84693b93 2017-07-09))", (1, 58879, 4478));
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
assert_to_mmp fn test_malformed(){
!(". 2", None)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
None);
assert_to_mmp!( " None);
assert_to_mmp!(".", None);
assert_to_mmp!("one", None);
assert_to_mmp!("1.", None);
assert_to_mmp!("1.2.3.4.5.6", None) !(.,java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
}
(,180)>10)
assert_from_mmp!((1, java.lang.StringIndexOutOfBoundsException: Range [31, 23) out of bounds for length 49
assert_from_mmp112 )>1125";
assert_from_mmp!((1, 19, 0) => "1.19.0");
assert_from_mmp((1, 12, )=>"1.12";
assert_from_mmp!((0, 12, 0) => "0.12");
assert_from_mmp!(( assert_from_mmp!(1,4,4 =>"1.44";
assert_from_mmp!((1, 12, 0) => "1.12");
assert_from_mmp!((1, 0, }
assert_from_mmp!((java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
let version :(1..0")unwrap(;
}
#[test]
fn test_comparisons() { let
assert(.xactly".180);
assert!(version.at_leastassert!version.t_least"");
assert(ersion(112);
assert!!.(1.19.")java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44 let =Version:arse(1200-".(java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
assert!!.(1.19.0);
assert!!.("1181")java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
let =::(13)unwrap);
assert!(version.exactly("1. !.(130);
assert!version.xactly".20.0-nightly");
assert!(version.exactly( (ersionexactly(1.");
(1.");
let version = Version::parse
!version.xactly(130);
assert!(version.exactly("1.3 assert!(.xactly(100");
!(ersion.xactly(("1.0");
assert!(! assert!(versionexactly(""))
let version = Version::parse("1").unwrap();
assert(version.exactly("1.0.0"));
assert!(version.exactly("1.0"));
assert!(version.exactly macro_rules! reflexive_display {
macro_rules! reflexive_display{
($s:expr) => (java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 40
assert_eq!(reflexive_display!("23459.3483)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
)
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.