in gazebo/src/any.rs [249:270]
fn test_can_convert() {
#[derive(Debug, PartialEq, AnyLifetime)]
struct Value<'a>(&'a str);
#[derive(AnyLifetime)]
struct Value2<'a>(&'a str);
// Changing the return type too `Value<'static>` causes a compile error.
fn convert_value<'a>(x: &'a Value<'a>) -> Option<&'a Value<'a>> {
<dyn AnyLifetime>::downcast_ref(x)
}
fn convert_any<'p, 'a>(x: &'p dyn AnyLifetime<'a>) -> Option<&'p Value<'a>> {
x.downcast_ref()
}
let v = Value("test");
let v2 = Value2("test");
assert_eq!(convert_value(&v), Some(&v));
assert_eq!(convert_any(&v), Some(&v));
assert_eq!(convert_any(&v2), None);
}