Function lenient_semver::parse [−][src]
pub fn parse(input: &str) -> Result<Version, Error<'_>>
Expand description
Parse a string slice into a Version.
This parser does not require semver-specification conformant input and is more lenient in what it allows. The differenc include:
- Minor and Path are optional an default to 0 (e.g. “1” parses as “1.0.0”)
- Pre-release identifier may be separated by
.
as well (e.g. “1.2.3.rc1” parses as “1.2.3-rc1”) - Some pre-release identifiers are parsed as build identifier (e.g. “1.2.3.Final” parses as “1.2.3+Final”)
- Additional numeric identifiers are parsed as build identifier (e.g “1.2.3.4.5” parses as “1.2.3+4.5”)
- A leading
v
orV
is allowed (e.g. “v1.2.3” parses as “1.2.3”) - Numbers that overflow an u64 are treated as strings (e.g. “1.2.3-9876543210987654321098765432109876543210” parses without error)
This diagram shows lenient parsing grammar
Examples
use semver::Version; let version = lenient_semver::parse("1.2.3"); assert_eq!(version, Ok(Version::new(1, 2, 3))); // examples of a version that would not be accepted by semver_parser assert_eq!( lenient_semver::parse("1.2.M1").unwrap(), Version::parse("1.2.0-M1").unwrap() ); assert!(Version::parse("1.2.M1").is_err()); assert_eq!( lenient_semver::parse("1").unwrap(), Version::parse("1.0.0").unwrap() ); assert!(Version::parse("1").is_err()); assert_eq!( lenient_semver::parse("1.2.3.Final").unwrap(), Version::parse("1.2.3+Final").unwrap() ); assert!(Version::parse("1.2.3.Final").is_err()); assert_eq!( lenient_semver::parse("1.2.3.4.5").unwrap(), Version::parse("1.2.3+4.5").unwrap() ); assert!(Version::parse("1.2.3.4.5").is_err()); assert_eq!( lenient_semver::parse("v1.2.3").unwrap(), Version::parse("1.2.3").unwrap() ); assert!(Version::parse("v1.2.3").is_err()); assert_eq!( lenient_semver::parse("1.2.9876543210987654321098765432109876543210").unwrap(), Version::parse("1.2.0-9876543210987654321098765432109876543210").unwrap() ); assert!(Version::parse("1.2.9876543210987654321098765432109876543210").is_err());
This method is fixed to return a semver_v100::Version
.
A more flexible variant is parse_into
.