cargo-semver-checks 0.9.2

Scan your Rust crate for semver violations.
pub fn get_package_name(manifest_path: &std::path::Path) -> anyhow::Result<String> {
    let manifest = std::fs::read_to_string(manifest_path).map_err(|e| {
        anyhow::format_err!("Failed when reading {}: {}", manifest_path.display(), e)
    })?;
    let manifest: toml_edit::Document = manifest
        .parse()
        .map_err(|e| anyhow::format_err!("Failed to parse {}: {}", manifest_path.display(), e))?;
    let package = manifest.get("package").ok_or_else(|| {
        anyhow::format_err!(
            "Failed to parse {}: no `package` table",
            manifest_path.display()
        )
    })?;
    let crate_name = package["name"].as_str().ok_or_else(|| {
        anyhow::format_err!(
            "Failed to parse {}: invalid package.name",
            manifest_path.display()
        )
    })?;
    Ok(crate_name.to_owned())
}