Rust Notes in Rust-postgres and nickel.rs

声明

rust-postgres nickel.rs

示例代码段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//
let conn = Connection::connect("postgres://postgres:123456@localhost:5432", &SslMode::None).unwrap();
let stmt = conn.prepare("SELECT id, name, data FROM person").unwrap();
println!("{:?}", stmt.query(&[]).unwrap());
let rows = stmt.query(&[]).unwrap();
println!("{:?}", rows.get(0));
let row = rows.get(0);
println!("{:?}", row.len());
println!("id: {:?}", row.columns());

let row_id: i32 = row.get(0);
let row_name: String = row.get("name");
println!("{:?},,,{:?}", row_id, row_name);

//
let mut server = Nickel::new();
server.get("**", middleware!(row_name.clone()));
server.listen("127.0.0.1:6767");

conn::prepare 返回的是 Statement, statement需要真正执行,如 query(&[]) 才能真正查询数据库,&[] 返回的内置值;

本来返回的是 Result, 但是 代码中 直接 unwrap() , 所以直接得到 rows. 其中,有 Rows 和 Row 这两种不同的结构。rows.len() 得到记录数量, row.len() 得到是列数量。

注意: 在row.get() 时,需要指明返回的类型。其中,row.get()可以通过Index 或者 名称访问到数据。

直接 middleware(row_name) 会出现 cannot move out of captured outer variable in anFnclosure. 的错误,作用域的问题。这时可能通过 clone() 的方式处理。

http://rustbyexample.com/trait/clone.html

1
When dealing with resources, the default behavior is to transfer them during assignments or function calls.

Comments