Rust 分解复杂的返回类型

Rust 分解复杂的返回类型,rust,odbc,Rust,Odbc,嘿,大家好,我是个新手,在过去的一周里,我一直把头撞在墙上,想弄明白些什么。我正在通过ODBC机箱使用ODBC驱动程序查询SQL数据库。我正试图分解它返回的内容。我不知道如何成功地做到这一点。我尝试过将元素切碎并将其放入结构中,但没有成功。我试着让它保持原样,并在这方面给我做逻辑分析,结果很快变得非常复杂。我非常希望能举一个例子,说明如何在生锈的情况下处理这种情况 代码: ''' ''' 输出有8行以上相同格式的内容,但我省略了它,因此我不必清除每个内容的所有敏感位。解构在编译时发生。您正在处理

嘿,大家好,我是个新手,在过去的一周里,我一直把头撞在墙上,想弄明白些什么。我正在通过ODBC机箱使用ODBC驱动程序查询SQL数据库。我正试图分解它返回的内容。我不知道如何成功地做到这一点。我尝试过将元素切碎并将其放入结构中,但没有成功。我试着让它保持原样,并在这方面给我做逻辑分析,结果很快变得非常复杂。我非常希望能举一个例子,说明如何在生锈的情况下处理这种情况

代码: '''

'''
输出有8行以上相同格式的内容,但我省略了它,因此我不必清除每个内容的所有敏感位。

解构在编译时发生。您正在处理来自数据库的结果,数据库本质上是一个仅运行时的构造。具体而言,每一行都是一个
结果
值行
依次是:

类型ValueRow=Vec;
你不能破坏它

解决这个问题的唯一方法是,正如您所提到的,(验证并)将数据放入
struct
中,然后可以对其进行解构

让FetchedData{a,b,c}=FetchedData::validate(row.unwrap()).unwrap();
use odbc_iter::{Odbc, ValueRow, Column};
use chrono::NaiveDateTime;
fn main() {

    let key = "CONN_STR;";

    let mut connection = Odbc::connect(&key)
        .expect("failed to connect to database");

    let mut db = connection.handle();
    let query_result = db.query::<ValueRow>("EXEC dbo.BackupGet")
        .expect("failed to run query");

    for row in query_result {
        println!("{:?}", row.expect("failed to fetch row"))
    
    }
}
[Some(Integer(5877)), Some(Timestamp(2021-05-26 13:30:55.827)), None, Some(String("Title here")), Some(Timestamp(2021-05-26 13:31:00.313)), Some(Timestamp(2021-05-26 13:47:25.053)), Some(String("Description here")), Some(Timestamp(2021-05-26 13:31:00.730)), Some(Timestamp(2021-05-26 13:31:05.013))]

[Some(Integer(5877)), Some(Timestamp(2021-05-26 13:30:55.827)), None, Some(String("Title here")), Some(Timestamp(2021-05-26 13:31:00.313)), Some(Timestamp(2021-05-26 13:47:25.053)), Some(String("Description here")), Some(Timestamp(2021-05-26 13:31:05.400)), Some(Timestamp(2021-05-26 13:32:00.097))]