小编seb*_*ssa的帖子

如何使用 Diesel 将 i64 与 Insertable 结合使用

我如何使用i64/u64与柴油一起使用?

我真的需要实施 diesel::Expression为原始类型trait 吗?

这是我的代码。

Cargo.toml

[dependencies]
...
diesel = { version = "1.4.5", features = ["sqlite", "numeric"] }
Run Code Online (Sandbox Code Playgroud)

migration/up.sql

[dependencies]
...
diesel = { version = "1.4.5", features = ["sqlite", "numeric"] }
Run Code Online (Sandbox Code Playgroud)

schema.rs

CREATE TABLE books (
  id INTEGER NOT NULL PRIMARY KEY,
  size INTEGER NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

来源:

table! {
    books (id) {
        id -> Integer,
        size -> Integer,
    }
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误:

use crate::schema::books;

#[derive(Insertable, Queryable)]
#[table_name="books"]
pub struct BookRecord …
Run Code Online (Sandbox Code Playgroud)

sqlite rust rust-diesel

5
推荐指数
1
解决办法
426
查看次数

如何声明方法的参数实现特定的特征

无法理解我做错了:

pub trait HasName {
    fn name() -> String;
}

pub struct WorkerHandler<T: HasName> {
    arg: T,
}

impl<T: HasName> WorkerHandler<T> {
    pub fn run(arg: T) {
        println!("{}", arg.name());
    }
}

fn main() {}
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

error: no method named `name` found for type `T` in the current scope
         println!("{}", arg.name());
                            ^~~~~~
Run Code Online (Sandbox Code Playgroud)

真正的情况是更复杂一点,但我想解释run的是T实现HasName特质.

rust

2
推荐指数
1
解决办法
55
查看次数

如何在用作函数结果的闭包内应用trait

我无法实现这种LISP结构

(defun foo (n)
  (lambda (i) (incf n i)))
Run Code Online (Sandbox Code Playgroud)

在Rust.我试过这个:

use std::ops::Add;

fn f<T: Add>(n: T) -> Box<Fn(T) -> T> {
    Box::new(move |i: T| n + i)
} 

fn main() {
    let adder = f(2);
    assert_eq!(4, adder(2));
}
Run Code Online (Sandbox Code Playgroud)

但它会导致错误:

error: mismatched types:
 expected `T`,
    found `<T as core::ops::Add>::Output`
(expected type parameter,
    found associated type) [E0308]
           Box::new(move |i: T| n + i)
                                ^~~~~
Run Code Online (Sandbox Code Playgroud)

似乎Add为外部函数定义的特性没有转移到内部闭包中.

是否有可能实施这样的建设?

可以使用具体类型而不是泛型来实现此函数:

fn f(n: i32) -> Box<Fn(i32) -> i32> {
    Box::new(move |i| n …
Run Code Online (Sandbox Code Playgroud)

rust

1
推荐指数
1
解决办法
223
查看次数

标签 统计

rust ×3

rust-diesel ×1

sqlite ×1