MCPcopy Index your code
hub / github.com/dtolnay/semver

github.com/dtolnay/semver @1.0.28

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.28 ↗ · + Follow
131 symbols 322 edges 19 files 13 documented · 10%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

semver

github crates.io docs.rs build status

A parser and evaluator for Cargo's flavor of Semantic Versioning.

Semantic Versioning (see https://semver.org) is a guideline for how version numbers are assigned and incremented. It is widely followed within the Cargo/crates.io ecosystem for Rust.

[dependencies]
semver = "1.0"

Example

use semver::{BuildMetadata, Prerelease, Version, VersionReq};

fn main() {
    let req = VersionReq::parse(">=1.2.3, <1.8.0").unwrap();

    // Check whether this requirement matches version 1.2.3-alpha.1 (no)
    let version = Version {
        major: 1,
        minor: 2,
        patch: 3,
        pre: Prerelease::new("alpha.1").unwrap(),
        build: BuildMetadata::EMPTY,
    };
    assert!(!req.matches(&version));

    // Check whether it matches 1.3.0 (yes it does)
    let version = Version::parse("1.3.0").unwrap();
    assert!(req.matches(&version));
}

Scope of this crate

Besides Cargo, several other package ecosystems and package managers for other languages also use SemVer: RubyGems/Bundler for Ruby, npm for JavaScript, Composer for PHP, CocoaPods for Objective-C...

The semver crate is specifically intended to implement Cargo's interpretation of Semantic Versioning.

Where the various tools differ in their interpretation or implementation of the spec, this crate follows the implementation choices made by Cargo. If you are operating on version numbers from some other package ecosystem, you will want to use a different semver library which is appropriate to that ecosystem.

The extent of Cargo's SemVer support is documented in the Specifying Dependencies chapter of the Cargo reference.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Core symbols most depended-on inside this repo

assert_to_string
called by 64
tests/util/mod.rs
req
called by 45
tests/util/mod.rs
is_empty
called by 25
src/lib.rs
req_err
called by 21
tests/util/mod.rs
version
called by 18
tests/util/mod.rs
version_err
called by 12
tests/util/mod.rs
as_str
called by 9
src/lib.rs
prerelease
called by 8
tests/util/mod.rs

Shape

Function 83
Method 33
Class 12
Enum 3

Languages

Rust100%

Modules by API surface

tests/test_version_req.rs23 symbols
src/identifier.rs20 symbols
src/lib.rs13 symbols
src/parse.rs12 symbols
tests/util/mod.rs10 symbols
tests/test_version.rs10 symbols
src/eval.rs9 symbols
src/serde.rs7 symbols
src/impls.rs6 symbols
tests/test_identifier.rs4 symbols
tests/node/mod.rs4 symbols
src/error.rs4 symbols

For agents

$ claude mcp add semver \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact