pub fn deserialize<'de, P, T, D>(de: D) -> Result<P, D::Error>where
    P: SmartPtr<Target = T>,
    T: ?Sized + Deserialize<'de>,
    D: Deserializer<'de>,