首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rust中从MySQL中获取二进制列?

问如何在Rust中从MySQL中获取二进制列?
EN

Stack Overflow用户
提问于 2020-09-26 18:48:07
回答 1查看 236关注 0票数 4

我正在使用https://docs.rs/mysql/19.0.1/mysql/从mySQL数据库中获取一些行。我将它们分配给一个结构,如下所示:

代码语言:javascript
复制
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,但当我想在我的结构中使用它时,我得到了以下错误:

代码语言:javascript
复制
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获取二进制列?使用提供的文档我找不到任何东西。任何例子都是很好的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-26 19:22:21

也许您可以像下面这样将数据读取为一组字节

代码语言:javascript
复制
pub struct Policy {
    sub: Option<Vec<u8>>,
    contents: Option<String>,
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64076722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档