ソモサン

私rohkiによる活動や読書の記録をつらつらと書くページです

Rust

Rust の CLI ツールで引数の値が特定のものであれば別の引数を必須にしたい

短く crap.rs の requires_if/requires_ifs を使おう。 .arg( Arg::with_name("iterator-type") .short("t") .long("iterator-type") .possible_values(&IteratorType::variants()) .requires_ifs(&[ ("AT_SEQUENCE_NUMBER", "sequence-number"), ("AFTER_SE…

Rust でクロスプラットフォーム対応するときに便利だった Cargo Plugin: cross

これ github.com 使い方 cargo install cross cross build --target i686-unknown-linux-gnu 実際に Travis で動かしている k-iter/.travis.yml at master · ROki1988/k-iter とかを見るとよいかも。 発端 rohki.hatenablog.com 前回 AWS Kinesis Stream を…

CLI で AWS Kinesis Stream の中身をひたすら追ってくれる k-iter をつくってる

作ったもの github.com インストール方法 rustup.rs - The Rust toolchain installer rustup を設定したうえで、下記コマンドを実行。 cargo install --git https://github.com/ROki1988/k-iter.git もしくは Releases · ROki1988/k-iter より合致するものを…

Rust で Scala の continually ぽいもの

こんな感じ? extern crate rand; use rand::{Rng, thread_rng}; use std::usize; pub struct Iterate<A> { func: A } impl<B, A> Iterator for Iterate<A> where A: FnMut() -> B { type Item = B; #[inline] fn next(&mut self) -> Option<B> { Some((self.func)()) } #[in</b></a></b,></a>…

Kinesis Firehose のデータ変換を Rust でやってみて速度向上が見込めた話

概要 Rust コードを Lambda 上で動かせたーと喜んだんですが、活用どころあるんだろうかと考えてみて検証してみました。 結果として Python 比較で1秒当たりで 15 倍ほど多く処理できました。 以下でつらつらと書いていってます。

AWS Lambda 上で Rust のコードを実行しようとして結構頑張った話

短く OpenSSL はやはり鬼門 というわけでできたー。下が成果物。 github.com

Rust の ライブラリ Rusoto を使って AWS サービスにアクセスする

表題にあるとおり、Rust から AWS にアクセスするための SDK を大分前にメモしていたので試した、という話。 extern crate rusoto_core; extern crate rusoto_s3; use rusoto_s3::{S3, S3Client}; use rusoto_core::{DefaultCredentialsProvider, Region}; u…

Rust で Vector データを Map + Vector にいれる

どんな状況だったかというと、JSON で設定ファイルを書く必要があってそれが複数人にいじられるという感じで、マージで地獄を見たのでまずは TSV でどうにかしてみよう、となったときに書いたやつです。*1 ほんと JSON はマージしづらくてかなわん。 そして…

Rust で素朴に HTTP リクエストを投げる

以前、Windows でHTTP リクエストするために、1時間ほど格闘した rohki です。 ツラカッタ… で、格闘する原因となった HTTP ライブラリ hyper の OpenSSL への依存が v0.10 でなくなったとのこと。 Release v0.10.0 · hyperium/hyper Remove SSL feature (and ope…

Rust でネストが深くなったけど未解決

前に行った into_iter() は無事動きました。何だったんだ。 今はこんな感じです。 perf_client/pdh_wrapper.rs at master · ROki1988/perf_client · GitHub impl PdhController { pub fn new(path: Vec<PdhCounterPathElement>) -> Option<PdhController> { pdh_open_query() .map(|q| { let cs = p</pdhcontroller></pdhcounterpathelement>…

Rust + Windows でウィンドウタイトルとかとってみる

なにしてんねん 社会人生活4年目で、Windows に染まりきってしまいました・・・ ShellScript で GCC ビルドをしていたあの頃にはもう・・・ さて Rust をこのごろ触ってます。 で、Windows でも API がちょろっとあったので、試しにやってみました。 ROki1988/acti…

Rust のサンプルコードに違和感を憶えたところ

Hackathon の間に Rust をもくもくと勉強してました。 で、無意識に書いたコードとサンプルコードに差分があったので、 その辺を書いてきます。