rustに関するletitrideのブックマーク (10)

  • RustでPostgreSQLの拡張を作ってみる - Qiita

    Rust 初心者のsonesuke( https://twitter.com/sonesuke )です。 これは、Rust Advent Calendar 2021 の 16日目です。遡って書いています。 仕事でPostgreSQL拡張機能を作るシチュエーションが出てきたのですが、「C言語で拡張つくるのもつまらないな」と思っていたら、Rustでも作れるみたいだったので、作ってみました。 TL;DR PostgreSQLに日形態素解析をする拡張を作ってみた cargo-pgxを使ってRustで簡単にPostgreSQLを作ることができる 成果物は以下 要件定義 真面目に、要件定義してみます。 日語の形態素解析がしたい 解析対象はPostgreSQLTEXTカラム インストールが簡単 → PostgreSQLにコピーしたら使える (ビルドし直さない) パフォーマンスがよいこと 筆者の知

    RustでPostgreSQLの拡張を作ってみる - Qiita
  • Rust は何を解決しようとしたのか;メモリとリソースと所有権

    みなさん、 Rust 書いてますか?最近は Rust が楽しくてたまりませんが、のんびりやっていたらなんとなく理解するまで 1 年くらいかかってしまいました。 良い言語なので、できればみなさんにも気軽に手を出してもらいたく、 Rust の中で特に難しい概念とされている話「所有権(ownership)」について簡単にまとめることにしました。 おことわり 今回記述する「所有権」は、英語で "ownership" として表現されるものを和訳した単語です。 今回説明している概念は、「所有権」という言葉よりも "ownership" (およびその対訳である「所有」、「持ち主であること」) のほうが的確であると思いますが、このドキュメントでは「所有権」という言葉を使います。 所有権とは 所有権とは、簡単に言えば「値(データ)を持っている」 「その値を解放することに責任を負っているもの」のことを指します

    Rust は何を解決しようとしたのか;メモリとリソースと所有権
    letitride
    letitride 2021/01/13
    他の方のコメントでもある通り、struct内でリソースを借用しようとすると、lifetime管理が必要になって、Rust難しいってなる(^_^;)
  • Rustで高速に大量のHTTPリクエストを投げる - Qiita

    自己紹介 趣味Rustをやっている Twitter https://twitter.com/hatookov Github https://github.com/hatoo SoundCloud https://soundcloud.com/gfyxxqjngkze ネットワーク初心者なので誤りがあるかも知れません モチベーション oha HTTPロードジェネレータ Apache Bench(ab)みたいな tui-rsでリアルタイム表示 とにかくいっぱいリクエストを投げたい! ベンチマーク環境 WSL 2 Ryzen 3950x 今回はtokio https://github.com/hatoo/rust_http_benchmarks ベンチマーク雛形 ベンチマーク系のライブラリは複数回実行してしまい、時間がかかるのでやめた ざっくりと時間がわかればいいかな 簡単のためにサーバーはw

    Rustで高速に大量のHTTPリクエストを投げる - Qiita
  • RustのActixで、シンプルなWebSocket例を書いた - Qiita

    RustでWebSocketを扱いたい!となった時, ws-rs なりあると思うのですが, RustでWebやるぞ~ってなったら, あれじゃないですか, Actixが結構いい感じみたいなのあるじゃないですか. (あるよね...?) なのでActixとWebSocketをちょろっと触ってみようと思ったのですけど, これが思ってたよりも意外と難しかったので, 同じような人向けへのチュートリアル的な感じになれば嬉しいかな~, と思いますです. というわけで, この記事ではRustのつよつよフレームワークであるActixを使用して, シンプルなWebSocket処理を実装したよ!っていう備忘録になっております. コネクション貼って hello みたいなやつを送受信して終わり!ではなく, WebSocketといえばリアルタイムチャット!みたいなのがあると思うので, 接続している他のクライアントにもメ

    RustのActixで、シンプルなWebSocket例を書いた - Qiita
  • [Rust] dockerコンテナにマウントしたディレクトリでbuildすると遅かった話し - Qiita

    普段の開発時にソースコードを書き換える度にdocker buildしているとめんどくさいので ホスト側のソースコードのディレクトリをdockerコンテナにマウントしてコンテナ上でコンパイルして開発しているのですが どうもコンパイルが異常に遅いので、いろいろ試したのでメモ 環境 OS macOS Mojave 10.14 rustc 1.30.0 (da5f414c2 2018-10-24) docker Docker for mac Version 2.0.0.0-beta1-mac75 (27117) ビルドするアプリケーション yagince/rust-webapp-starter ちょっと前にactix-web+vuejsを試してみる為に作ったリポジトリがあるので、こちらで試します。 version: '3.1' services: postgres: container_name:

    [Rust] dockerコンテナにマウントしたディレクトリでbuildすると遅かった話し - Qiita
    letitride
    letitride 2020/12/06
    ホストでビルドした際のtargetディレクトリが含まれているとDocker上でのコンパイルが遅くなる
  • コンパイルキャッシュでRustのビルド時間を短縮しよう - Qiita

    これはRustその3 Advent Calendar 2019の初日の記事です。 sccache — Mozillaが開発したRust製のコンパイルキャッシュ Rustはコンパイル言語です。個人的にはRustのコンパイル速度は遅くはない方だと思っていますが、依存しているクレートが多いとビルドにかかる時間が長くなります。特に非同期I/Oを行うWebクライアント/サーバーのクレートを使ったときや、Cargo自体をライブラリとして使うCargoサブコマンドをビルドするときなどは、依存クレートが200個くらいになることがあり、マシンの性能によってはビルドにかなりの時間を要します。 ビルド時間を短縮するためにコンパイルキャッシュという種類のソフトウェアがあります。これはコンパイルによって作られた成果物をディスクなどにキャッシュしておき、同じ条件のコンパイル要求があったときには、キャッシュしたものを返

    コンパイルキャッシュでRustのビルド時間を短縮しよう - Qiita
  • Rustで直接SQLを書いてMySQLからデータを抽出する方法 - Qiita

    use diesel::mysql::MysqlConnection; use diesel::prelude::*; use dotenv::dotenv; pub fn establish_connection() -> MysqlConnection { let database_url = "mysql://[user]:[password]@host[:port][/database]"; MysqlConnection::establish(&database_url) .expect(&format!("Error connecting to {}", database_url)) } use crate::utils::establish_connection; use diesel::deserialize::QueryableByName; use diesel::my

    Rustで直接SQLを書いてMySQLからデータを抽出する方法 - Qiita
  • Rustでのユーザー認証

    これは、Rustを使用したWebサービスの作成に関する探索シリーズの最後の部分です。私たちの調査は、あなたが従うのをより簡単にするために、明確なステップに分けられます: セットアップ。 確認メールを送信します。 ユーザーアカウントの作成と認証(ここにいます)。 リソースが見つからない場合は、新しいエラータイプが必要です。 // src/errors.rs //... #[derive(Clone, Debug, Display)] pub enum AuthError { // ... #[display(fmt = "NotFound: {}", _0)] NotFound(String), } impl ResponseError for AuthError { fn error_response(&self) -> HttpResponse { match self { // ...

  • Web Application Server by Rust with actix-web - Qiita

    はじめに 最近業務でactix-webによるWeb Application Server開発を実施する機会がありましたので、備忘録を兼ねて記事にしようと思います。 英語になりますが公式ドキュメントには詳細な説明が記載されていますので、必要に応じてそちらを参照下さい。 actix-webについて actix-webとは現在非常に活発に開発が進められているRustのWeb application frameworkです。 公式からの引用になりますが、主な特徴としては以下の通りとなります。 Supported HTTP/1.x and HTTP/2.0 protocols Streaming and pipelining Keep-alive and slow requests handling Client/server WebSockets support Transparent conte

    Web Application Server by Rust with actix-web - Qiita
  • FnBoxについて - 簡潔なQ

    Rustの FnBox について、動機・仕組み・問題点を説明する。 FnBox の動機 以前の記事では、「「クロージャを boxせずに 返したい」という欲求は人類の四大欲求のひとつと言われている。 」と書いたが、出所の異なるクロージャを同じ型で扱う必要がある場合は無理せず Box に入れるべきである。 例えば、非同期処理など、継続渡し形式で何らかの処理をする場合は、一般に生のクロージャでは使い勝手が悪い。おもちゃ的な例として、フィボナッチ数列の計算を継続渡し形式で行うことを考える。以下のように書くとうまくいかない。 fn fib_cont<T, F: Fn(u32) -> T>(n: u32, continuation: F) -> T { if n <= 1 { continuation(n) } else { fib_cont(n - 1, |a| { fib_cont(n - 2,

    FnBoxについて - 簡潔なQ
    letitride
    letitride 2020/11/09
    The Rust Programming Language を学習している時に辿り着いた記事。Box<FnOnce()>の所有権についての説明。
  • 1