Como escrever uma característica vinculada a uma referência a um tipo associado na própria característica?
Eu tenho este código:
extern crate serde;
use serde::de::DeserializeOwned;
use serde::Serialize;
trait Bar<'a, T: 'a>
where
T: Serialize,
&'a T: DeserializeOwned,
{
}
Eu gostaria de escrever isso usando um tipo associado, porque o tipoT
não é importante para os usuários desse tipo. Cheguei até aqui:
trait Bar {
type T: Serialize;
}
Não consigo descobrir como especificar o outro limite.
Por fim, quero usar uma função como esta:
extern crate serde_json;
fn test<I: Bar>(t: I::T) -> String {
serde_json::to_string(&t).unwrap()
}