2

次のコードはコンパイルに失敗します:

55 |                 (":dataset_id", &dataset_id),
   |                                 ^^^^^^^^^^^ expected `u32`, found `i32`
pub fn save(&mut self, annotations: Vec<Record>, dataset_id: i32) -> Result<(), Error> {
        let mut tx = self.conn.transaction()?;
        for record in records {
            let json: String = record();
            let sql: &str =
                "INSERT INTO records (record_id, dataset_id, value)
                 VALUES (:record_id, :dataset_id, :value)";
            let mut statement = tx.prepare(sql)?;
            statement.execute(&[
                (":record_id", &record.id),
                (":dataset_id", &dataset_id),
                (":value", "hello world")]);
        };
        tx.commit()?;
        Ok(())
}

そして、SQL ステートメントから dataset_id を削除し、次の行をコメントアウトすると:(":dataset_id", &dataset_id),

次に、コンパイルに失敗します:

56 |                 (":value", &"hello".to_string()),
   |                            ^^^^^^^^^^^^^^^^^^^^ expected `u32`, found struct `std::string::String`
4

1 に答える 1