Rust LT #8 で発表した

Rust LT #8 で発表した。

rust.connpass.com


低レイヤー寄りの発表が多かったので、tide を使って5分でバックエンドサーバーを作るという実用に特化した内容で発表した。

発表内容

use futures::executor::block_on;
use serde::Serialize;
use tide::{Request, Response};

fn main() {
    block_on(run_server()).expect("Failed");
}

async fn run_server() -> Result<(), std::io::Error> {
    let mut app = tide::new();
    // /api/user_id

    app.at("/api/:user_id")
        .get(|request: Request<_>| async move {
            let user_id = request.param::<i64>("user_id").unwrap();
            let username = get_username(user_id);
            let user_info = UserInfo { username };
            let response = Response::new(200).body_json(&user_info).unwrap();
            response
        });

    app.listen("0.0.0.0:8081").await?;
    Ok(())
}

#[derive(Serialize)]
struct UserInfo {
    username: String,
}

fn get_username(user_id: i64) -> String {
    match user_id {
        1 => "kenkoooo",
        2 => "rust",
        _ => "unknown",
    }
    .to_string()
}

良くなかったこと

つい勢いで Python の悪口を言ったが、特にこういったコミュニティ活動の場で悪口を言うのはコミュニティ全体に悪影響を与えかねないので最悪で、本当に良くなかった。僕の場合は普段から意識して気をつけないとまた同じことをやってしまう気がする。反省する。