エンジニアの松本です。2022年7月19日に『Rust、何もわからない... #3』を行いました。本イベントはチュートリアル卒業後に実務でRustを使っていく中で得た知見の共有を目的とした中級者向けのイベントです。3回目となる今回はフルカイテンの横田さん(atsuyokota)にゲストLTをしていただきました。各LTの内容を紹介します。
rust-analyzer メッチャ便利 by kenkoooo
弊社のテックリード、kenkooooさんからはrust-analyzerの紹介とライブデモがありました。
Language Serverを実装すると共通のプロトコルを通していろんなエディタで同じ体験が得られて最高!という話から、rust-analyzerは高速に動作して補完や型表示が便利だという紹介のあと、ライブデモがありました。
ヌルヌルと画面上に表示される補完サジェストが更新され、型アノテーションやインポートの自動化の使い所など、どこで楽をしながらコードを書いているのかが分かる面白いデモでした。
イベントのハッシュタグ
を見ていただきたいのですが、ライブデモではAtCoderの過去問が題材だったため、rust-analyzerよりもkenkooooさんが競プロをしているところに盛り上がる方も大勢いらっしゃいました。
clippy::await_holding_{lock, refcell_ref} についての深堀り by khei4
続いてkenkooooさんと同じチームで働いている@khei4さんが業務中に出会ったClippyの警告からRefCellと非同期が絡んだ場合の挙動について調査した結果を発表しました。
RefCellを使うとコンパイル時ではなく実行時にborrow checkを行うことができますが、非同期処理のawaitを跨いで参照を保持すると処理のタイミングによってpanicになることがあり、これを警告するものでした。
await() と同じブロックスコープの中でdropするのでは不十分で、ブロックスコープを切ってやる必要があるのは面白いポイントでした。
Rust on Lambda 大きめCSV生成 by atsuyokota
最後にフルカイテンの@atsuyokota さんによる発表です。フルカイテンさんのnoteにもレポートが上がっています。
Webサーバ上でCSVを生成するとメモリ負荷がおおきいため、SQSを経由してLambdaでCSVを生成するように修正したという内容で、actix-webと共通のロジックを使うためにLambda上でRustを動かしている(しかも起動が高速)と選定理由も明確でした。
非常に実務的で、分かりやすく面白い発表でした。ご登壇ありがとうございました!
最後に
今後も『Rust、何もわからない...』は定期開催していきたいと考えています。ご興味のある方はconnpassページをフォローして告知を受け取れるようにしてみてください。
また、estieはエンジニアに限らず求人中です。お気軽にカジュアル面談や会社説明会にお越しください。新しいメンバーとよりよい解決策を生み出していけるのを楽しみにしています。