refquiem 0.3.1

A cargo requiem for the refs your Rust code left behind
Documentation
//! Manifest entries share the path index as `[<member:DIR>, <kind>, name]`, segments no
//! identifier can spell.

use crate::ItemKind;

/// The first segment of every entry of the member in `dir`.
pub(crate) fn member(dir: &str) -> String {
    format!("<member:{dir}>")
}

/// The member directory of a first segment written by [`member`].
pub(crate) fn member_dir(segment: &str) -> Option<&str> {
    segment.strip_prefix("<member:")?.strip_suffix('>')
}

/// The second segment of entries of `kind`.
pub(crate) fn marker(kind: ItemKind) -> &'static str {
    match kind {
        ItemKind::Package => "<package>",
        ItemKind::Dependency => "<dependency>",
        ItemKind::Feature => "<feature>",
        ItemKind::Binary => "<binary>",
        ItemKind::Example => "<example>",
        _ => unreachable!("only manifest entry kinds have markers"),
    }
}