macOS Catalina でやる方法です。
まず、mysqlをインストール
% brew install mysql
そんで、
id と name カラムを持つ、usersというテーブルを作ります。
以下のソースを用意して
% cargo run
すると、usersテーブルのidとnameが表示されます。
main.rs
// extern crate diesel; use crate::utils::establish_connection; use diesel::deserialize::QueryableByName; use diesel::mysql::MysqlConnection; use diesel::prelude::*; use diesel::sql_query; use diesel::sql_types::Integer; use diesel::sql_types::Text; mod utils; type DB = diesel::mysql::Mysql; #[derive(Debug)] pub struct User { id: i64, name: String, } impl QueryableByName for User { fn build>( row: &R, ) -> diesel::deserialize::Result { Ok(User { id: row.get("id")?, name: row.get("name")?, }) } } fn main() { simple_sql(); } fn simple_sql() { let connection: MysqlConnection = establish_connection(); let users: Vec = sql_query( " SELECT id, name FROM users ", ) .load(&connection) .unwrap(); for user in users.iter() { println!("{}", user.id); println!("{}", user.name); } }
これは、mysqlのid, password が root, db名は hogedb としましたが、
実際は各自の環境の値に修正してください
utils.rs
use diesel::mysql::MysqlConnection; use diesel::prelude::*; pub fn establish_connection() -> MysqlConnection { let database_url = "mysql://root:root@127.0.0.1/hogedb"; MysqlConnection::establish(&database_url) .expect(&format!("Error connecting to {}", database_url)) }
Cargo.toml
[dependencies] diesel = { version = "*", features = ["mysql"] }
おすすめの rust の本