pub fn strip_type_name(s: &'static str) -> &'static str {
if s.is_empty() {
return "unknown";
}
match s.rsplit_once("::") {
Some((_, tail)) => tail,
None => s,
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn strips_nested_path() {
assert_eq!(
strip_type_name("faucet_source_rest::stream::RestSource"),
"RestSource"
);
}
#[test]
fn strips_deeply_nested_path() {
assert_eq!(strip_type_name("my_crate::a::b::c::Inner"), "Inner");
}
#[test]
fn returns_unchanged_when_no_separator() {
assert_eq!(strip_type_name("Foo"), "Foo");
}
#[test]
fn empty_returns_unknown_sentinel() {
assert_eq!(strip_type_name(""), "unknown");
}
#[test]
fn preserves_generic_arguments() {
assert_eq!(strip_type_name("Foo<Bar>"), "Foo<Bar>");
}
#[test]
fn preserves_generics_after_path_strip() {
assert_eq!(strip_type_name("crate::Foo<Bar>"), "Foo<Bar>");
}
}