Skip to content

Commit d9d6e21

Browse files
committed
fix(impl/value): strip prefix from type name
1 parent 4ec8380 commit d9d6e21

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/value.rs

+18-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@ pub trait Value {
2222

2323
impl<T: string::ToString + str::FromStr<Err: fmt::Debug> + fmt::Debug> Value for T {
2424
fn typ(&self) -> &str {
25-
std::any::type_name::<T>()
25+
let type_name = std::any::type_name::<T>();
26+
&type_name[(type_name
27+
.rfind(':')
28+
.map(|v| v as isize)
29+
.unwrap_or_else(|| -1)
30+
+ 1) as usize..]
2631
}
2732

2833
fn set(&mut self, val: string::String) -> Result<(), string::String> {
@@ -40,3 +45,15 @@ impl<T: string::ToString + str::FromStr<Err: fmt::Debug> + fmt::Debug> Value for
4045
self.to_string()
4146
}
4247
}
48+
49+
#[cfg(test)]
50+
mod test {
51+
use super::*;
52+
53+
#[test]
54+
fn strip_prefix_from_type_name() {
55+
let val: Box<dyn Value> = Box::new("".to_string());
56+
let type_name = val.typ();
57+
assert_eq!(type_name, "String")
58+
}
59+
}

0 commit comments

Comments
 (0)