Сделал по
примеру, но ругается на типы данных, почему?
#[derive(Debug)]
pub struct Candle{
pub timestamp: i32,
pub open: f64,
pub close:f64,
pub min: f64,
pub max: f64,
pub ticks: Vec<CandleTick>
}
fn read()->Result<Vec<Candle>>{
let conn = Connection::open("candles.db")?;
let mut stmt = conn.prepare("SELECT * from candles limit 10")?;
let res :Vec<Candle>= stmt.query_map(&[], |row| {
Candle {
timestamp: row.get(1).unwrap(),
open: row.get(2).unwrap(),
close: row.get(3).unwrap(),
min: row.get(4).unwrap(),
max: row.get(5).unwrap(),
ticks: Vec::new()
}
})?;
Ok(res)
}
unwrap добавил тоже из за ругани что должен быть Result
Вобщем ответ компилятора:
error[E0308]: mismatched types
--> src/lib.rs:37:9
|
37 | / Candle {
38 | | timestamp: row.get(1).unwrap(),
39 | | open: row.get(2).unwrap(),
40 | | close: row.get(3).unwrap(),
... |
43 | | ticks: Vec::new()
44 | | }
| |_________^ expected enum `std::result::Result`, found struct `Candle`
|
= note: expected type `std::result::Result<_, rusqlite::error::Error>`
found type `Candle`
error[E0308]: try expression alternatives have incompatible types
--> src/lib.rs:36:27
|
36 | let res :Vec<Candle>= stmt.query_map(&[], |row| {
| ___________________________^
37 | | Candle {
38 | | timestamp: row.get(1).unwrap(),
39 | | open: row.get(2).unwrap(),
... |
44 | | }
45 | | })?;
| |_______^ expected struct `std::vec::Vec`, found struct `rusqlite::row::MappedRows`
|
= note: expected type `std::vec::Vec<Candle>`
found type `rusqlite::row::MappedRows<'_, [closure@src/lib.rs:36:47: 45:6]>`
Тип для res обозначил "наобум" конечно..