¿Cómo escribir un rasgo vinculado para una referencia a un tipo asociado en el rasgo mismo?

Tengo este código:

extern crate serde;

use serde::de::DeserializeOwned;
use serde::Serialize;

trait Bar<'a, T: 'a>
where
    T: Serialize,
    &'a T: DeserializeOwned,
{
}

Me gustaría escribir esto usando un tipo asociado, porque el tipoT no es importante para los usuarios de este tipo. Llegué hasta aquí:

trait Bar {
    type T: Serialize;
}

No puedo entender cómo especificar el otro límite.

n última instancia, quiero usar una función como esta:

extern crate serde_json;

fn test<I: Bar>(t: I::T) -> String {
    serde_json::to_string(&t).unwrap()
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta