ごらくらいふ

プログラミングしたりゲームしたり

Rust

Rust Vec<T>を特定の長さで分割する

背景 gifとかzipとかパースしたいなあ+Rust触りたいなあ! ということで、まずはバイナリダンプから始めようとした。 以下のようなフォーマットで標準出力に吐き出したい。 50 4b 03 04 00 00 00 00 00 00 00 00 00 00 00 00 | PK.............. 一行出力す…

Zaif Apiを叩くツール zacli v0.1.0 をリリースした。

Rust製のZaif API Wrapperを作っているので、これをコマンドラインツールとして使用するCrateを作成した。 yajamon.hatenablog.com インストール方法 RustとCargoの準備が整っているなら、以下のコマンドでインストールできる。 cargo install zacli 使い方 …

Rustでホームディレクトリのファイルを読み込みたい(ドキュメントに書いてあってうれしかった話)

これ。 use std::env; use std::path::{Path, PathBuf}; use std::fs::File; use std::io::prelude::*; fn open_file() { let mut path = env::home_dir().unwrap(); path.push("config.toml"); let mut file = File::open(path).unwrap(); let mut contents…

Zaif-api-rust v0.5.0をリリースした。trait From、エラーハンドリングに便利だった。

ついさっき、Rustで書いたzaif-apiのwrapper、v0.5.0をリリースした。 github.com 今回の改修はエラーハンドリングが目的で、「まず動く」で作っていたところを取り回しできるようにした。 活躍したのが標準ライブラリに入っているFrom<T>トレイトで、あるstruc</t>…

Rustの話: traitの定義部分では、フィールドに干渉できない

前提 rustc 1.22.1 本題 traitを書く時、こういう書き方はできない。 trait Horizontal { // x:i64 というフィールドの存在を前提とする // x をカウントアップして、新しい値を返す fn count_up (&mut self) -> i64 { self.x += 1; self.x } } struct Point…

Rustでzaif apiのwrapperを書いている

Rustでzaif apiのwrappreを書いたている。 reqwestでもりもり実装していて、なんか楽しい。 まだ借用チェッカーと戦ってるボーイなので、もりもりコピーして構造体たち皆所有権のあるデータ持つ、みたいな書き方してる。 まぁ使う分には引数に与えたデータを…

列挙型で error[E0507]: cannot move out of borrowed content に対処した

ムーブセマンティクスを忘れていた話。 Builderパターンで以下のように書いたところコンパイラにerror[E0507]: cannot move out of borrowed contentと怒られた。 enum Method { Get, Post, } struct Client { method: Method, } struct ClientBuilder { met…