2018/08/22

自作クレートonigiriの紹介

onigiri

最近Rustのクレートを自作してcrates.ioに登録してみました。その名もonigiri。なぜこの名前にしたかと申しますと、charを米粒と考えて、集めたらどうなるか?おにぎり・握り飯・おにぎらない・おむすび・茶碗のご飯。そこで英語でrice ballなんていうのも面白くないので、onigiriにしたわけです。

このクレートの機能は特に大したものではありません。おそらく皆さんはもっと効率的で優れたコードによって、同様の結果を得ることができると思います。登録したのは、私が時々、あったら便利だなと思うごく小さな機能を、毎回書くのが面倒なので、気軽にcargo buildして使えるようにしたかっただけです。便利だなと感じていただけたなら、しめしめという感じです。
使い方はとても簡単です。cargoで新しいプロジェクトを作成したら、Cargo.tomlに以下のように書いてください。

----------
Cargo.toml
----------

[dependencies]
onigiri = "0.1.3"
現在の最新のバージョンは0.1.3になっています。大した機能を持っていないので、ビルドもすぐ終わります。一応テストはしておりますので、おかしなことにはならないはずです。ちなみに私のOSはLinuxMint18で、Rust1.28.0を使って作りました。実際の使用例は以下のようなものです。

extern crate onigiri;
use onigiri::{tools, validator};

fn main() {
    let test_text = "-123".to_string();
    let new_vvchar = tools::create_vvchar(&test_text);

    assert_eq!(&new_vvchar, &vec![vec!['-', '1', '2', '3']]);
    assert_eq!(validator::is_negative_number(&new_vvchar[0]), true);
   
    let num = tools::Ni32::new(&new_vvchar[0]);
    assert_eq!(&num.attr, &-123_i32);
   
    let literal = tools::Literal::new(&new_vvchar[0]);
    assert_eq!(&literal.attr, &"-123".to_string());
   
    let mut new_isize = tools::Nisize::new(&new_vvchar[0]);
    assert_eq!(&new_isize.attr, &-123_isize);
    assert_eq!(&new_isize.attr + 23_isize, -100_isize);
   
    let new_i128 = tools::Ni128::new(&new_vvchar[0]);
    assert_eq!(&new_i128.attr, &-123_i128);
}
簡単に説明しますと、Vecの要素をくっつけて、いろんな型に変換することができるというものです。実のところ、クレートの性能よりも作ったイラストのほうが気に入っているというのはここだけのお話。