Функция с общим типом параметра

#generics #types #rust #parameters #rust-rocket

#общие #типы #Ржавчина #параметры #rust-ракета

Вопрос:

Я использую веб-фреймворк Rocket, и мне нужно создать функцию с общим типом параметра parameter:

 use rocket_contrib::json::{Json, JsonValue};

fn bluid_succes_response<T>(data: T) ->  JsonValue  { 
    json!(data) 
}
  

Это ошибка, которую я имею:

 the trait `dataStructures::parameters_structures::_::_serde::Serialize` is not implemented for `T`
  

Как я могу реализовать Serialize признак для общего типа, например T , или есть другой способ решить проблему?

Ответ №1:

Вам нужно ограничить общий тип T признаком ( Serialize в данном случае):

 use rocket_contrib::json::{Json, JsonValue};

fn bluid_succes_response<T: serde::Serialize>(data: T) ->  JsonValue  { 
    json!(data) 
}