# [diverve (Insertable)] не реализовано для `std :: string :: String` - PullRequest
0 голосов
/ 14 мая 2018

Я получаю эту ошибку:

#[derive(Insertable, Queryable, Identifiable, Debug, PartialEq)]
         ^^^^^^^^^^ the trait `diesel::Expression` is not implemented for `std::string::String`

, когда я пытаюсь скомпилировать это struct:

#[derive(Insertable, Queryable, Identifiable, Debug, PartialEq)]
#[table_name = "example_table"]
pub struct SigninLog {
    pub id: i32,
    pub user_group: UserRoleEnum,
    pub created_at: Option<SystemTime>,
    pub optional_data: Option<String>
}

Это потому, что оно содержит пользовательский enum или Option<String>?И если это проблема, как я могу ее решить?

1 Ответ

0 голосов
/ 14 мая 2018

В общем, чтобы иметь возможность #[derive(X)] для struct, все его члены также должны реализовать X. Это может быть не так с Insertable, потому что это не стандартная черта, но вы можете проверить это; в вашем случае Insertable не реализовано для String в пределах optional_data; он реализован для Option<T>, поэтому окружение Option не является проблемой.

Возможно, вы захотите внедрить Insertable вручную; Я не использовал diesel, хотя - возможно, есть более простой способ сделать это.

...