我正在使用https://docs.rs/mysql/19.0.1/mysql/从mySQL数据库中获取一些行。我将它们分配给一个结构,如下所示:
use mysql::*;
use mysql::prelude::*;
use serde::Serialize;
#[derive(Debug, PartialEq, Eq, Serialize)]
pub struct Policy {
sub: Option<mysql::Binary>,
contents: Option<String>,
}
pub fn list_policies() -> Result<Vec<Policy>> {
let url = "";
let pool = Pool::new(url)?;
let mut connection = pool.get_conn()?;
let policies: Vec<Policy> = connection.query_map("SELECT sub, contents FROM policy", |(sub, contents)| {
Policy { sub, contents }
},)?;
Ok(policies)
}问题是我的一些行是以mysql binary格式(例如uuid binary(16))存储的。我发现了mysql::Binary,但当我想在我的结构中使用它时,我得到了以下错误:
error[E0369]: binary operation `==` cannot be applied to type `std::option::Option<mysql::Binary>`
--> src/database/mod.rs:7:2
|
7 | sub: Option<mysql::Binary>,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)还有一些类似的"Eq“等。
我的问题是:如何使用rust mysql-package获取二进制列?使用提供的文档我找不到任何东西。任何例子都是很好的。
发布于 2020-09-26 19:22:21
也许您可以像下面这样将数据读取为一组字节
pub struct Policy {
sub: Option<Vec<u8>>,
contents: Option<String>,
}https://stackoverflow.com/questions/64076722
复制相似问题