Используй производную Insertable для float - PullRequest
0 голосов
/ 04 апреля 2020

Я начал с дизеля и ракеты в Rust и столкнулся с проблемой вставки плавающих значений в базу данных. Моя структура выглядит следующим образом:

#[derive(Serialize, Deserialize, Insertable)]
#[table_name = "database"]
pub struct New_Data{
    pub data1: f64,
    pub data2: f64,
    pub data3: f64,
}

, и я получаю эту ошибку: предел признака f64: diesel::Expression не удовлетворен метка: признак diesel::Expression не реализован для f64, примечание: требуется из-за требования по diesel::expression::AsExpression<diesel::sql_types::Numeric> для f64

Я читал, что дизель вроде использует свои типы данных / SQL, но я не знаю, как объявить Float. Я также попытался использовать дизель :: sql_types :: Float с похожим сообщением об ошибке.

1 Ответ

1 голос
/ 04 апреля 2020

Это выглядит как несоответствие между типом схемы поля, как определено в дизельном автоматически генерируемом schema.rs, и типом поля, которое вы определили в New_Data. Загляните внутрь автоматически сгенерированной схемы для определения data1 ->, вы можете найти что-то вроде:

data1 -> Float4

В этом случае тип поля должен быть f32. В противном случае, если это Float8, тип должен быть f64. Это отображение между языком типов дизельных схем распространяется далее на Option и Nullable. Если в схеме он выглядит как Nullable<Float4>, то в типе он должен быть Option<f32>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...