- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想转换结构 User
以添加十个字母命名的属性,从 a
到 f
和 m
到 p
。
#[macro_use]
extern crate mysql;
use mysql::Pool;
#[derive(Debug, Default)]
pub struct User {
/// The ID number of the user.
pub id: u32,
/// The name of the user / machine.
pub user: String,
/// The name of the company the user is attached to.
pub company: Option<String>,
/// The mass of the weight in the machine.
pub mass_of_weight: Option<f64>,
/// The total height of the machine.
pub total_height: Option<f64>,
/// The callibration coefficient for BMWI calculations involving this machine.
pub k_coefficient: Option<f64>,
/// The EU value for the machine at this point in time.
pub energy_utilisation: Option<f64>,
pub a: Option<f64>,
pub b: Option<f64>,
pub c: Option<f64>,
pub d: Option<f64>,
pub e: Option<f64>,
pub f: Option<f64>,
pub m: Option<f64>,
pub n: Option<f64>,
pub o: Option<f64>,
pub p: Option<f64>,
}
impl User {
/// Selects a user from the database, given their id.
pub fn new(id: u32, pool: &Pool) -> Option<Self> {
let (
user,
company,
mass_of_weight,
total_height,
k_coefficient,
energy_utilisation,
a,
b,
c,
d,
e,
f,
m,
n,
o,
p,
) = match pool.prep_exec(
include_str!("../../resources/sql/users/select.mysql"),
params!{"id" => &id},
).unwrap()
.next()
{
Some(Ok(row)) => mysql::from_row(row),
_ => return None,
};
Some(User {
id: id,
user: user,
company: company,
mass_of_weight: mass_of_weight,
total_height: total_height,
k_coefficient: k_coefficient,
energy_utilisation: energy_utilisation,
a: a,
b: b,
c: c,
d: d,
e: e,
f: f,
m: m,
n: n,
o: o,
p: p,
})
}
}
fn main() {}
当我运行 cargo build
时,我得到这个错误:
error[E0277]: the trait bound `(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _): mysql::prelude::FromValue` is not satisfied
--> src/main.rs:62:30
|
62 | Some(Ok(row)) => mysql::from_row(row),
| ^^^^^^^^^^^^^^^ the trait `mysql::prelude::FromValue` is not implemented for `(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)`
|
= note: required because of the requirements on the impl of `mysql::prelude::FromRow` for `(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)`
= note: required by `mysql::from_row`
SQL 是:
SELECT id, user, company, mass_of_weight, total_height, k_coefficient,
energy_utilisation, a, b, c, d, e, f, m, n, o, p
FROM users
我该如何处理这个错误?我试过 cargo clean
;它没有帮助。
最佳答案
编译器没有骗你。 FromRow
仅针对特定大小的元组实现。 author of the library suggests calling Row::take
:
pub fn new(id: u32, pool: &Pool) -> Option<Self> {
let sql = include_str!("../../resources/sql/users/select.mysql");
let mut row = match pool.prep_exec(sql, params!{"id" => &id}).unwrap().next() {
Some(Ok(row)) => row,
_ => return None,
};
Some(User {
id: row.take("id").unwrap(),
user: row.take("user").unwrap(),
company: row.take("company").unwrap(),
mass_of_weight: row.take("mass_of_weight").unwrap(),
total_height: row.take("total_height").unwrap(),
k_coefficient: row.take("k_coefficient").unwrap(),
energy_utilisation: row.take("energy_utilisation").unwrap(),
a: row.take("a").unwrap(),
b: row.take("b").unwrap(),
c: row.take("c").unwrap(),
d: row.take("d").unwrap(),
e: row.take("e").unwrap(),
f: row.take("f").unwrap(),
m: row.take("m").unwrap(),
n: row.take("n").unwrap(),
o: row.take("o").unwrap(),
p: row.take("p").unwrap(),
})
}
由于您没有对数据执行任何转换,您可能想看看 Diesel更适合您的应用。
关于mysql::value::FromValue 在调用 mysql::from_row 时没有为大元组实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49443070/
嗨,我想在 ENUM 中提供 fromValue() 函数。您能否提供您宝贵的建议,我应该选择哪种方法:- 这里我们每次迭代 ENUM 值并返回匹配的结果。 public enum DAY
我有这样一个类: public enum ReturnCode{ Code1( "Code1", "Return this code when there is an erreur"
我想在按下按钮时将图像旋转 190 度。这行得通,但是当我再次按下按钮时,动画需要从上次结束的地方开始,而不是从 0 开始。所以每次我按下按钮时,动画都需要旋转 190 度。 每次都从 0 开始,因为
我正在为 View 设置动画 (moveonView)。已为此 View 设置自动布局。当我在 CABasicAnimation 中将 moveonView 的“y”位置作为 fromValue 时,
我正在尝试更改动画为 heartBeatAnimation 的 CABasicAnimation 的 toValue/fromValue 的值 let heartBeatAnimation = CAB
我看到一些程序员在枚举结构中使用名为 fromValue 的函数。如果我们可以使用 valueOf,它的目的是什么?例如,我发现了这样的东西: public static FooEnum fromVa
我想转换结构 User 以添加十个字母命名的属性,从 a 到 f 和 m到 p。 #[macro_use] extern crate mysql; use mysql::Pool; #[derive(
我有以下代码: QString* data = new QString("data to QML"); engine.rootContext()->setContextProperty(QString
我有 2 个动画应用于 CAShapeLayer(我们将其命名为 pulseLayer),代码如下: let scaledAnimation = CABasicAnimation(keyPath: "
您多久进入一次从日期到日期的场景。 或者也许是一个 fromValue-toValue。 那些时候你是怎么做的? 我经常使用其中一种, T = ObjectType (DateTime, int, s
我是一名优秀的程序员,十分优秀!