1 unstable release

Uses old Rust 2015

0.1.1 Aug 11, 2016
0.1.0 Aug 7, 2016

#89 in #posix

MIT license

15KB
190 lines

varsun: Variable Substituion Functions(s) for Rust

varsunとは - About of varsun -

Go言語における os.ExpandEnv 相当のものが欲しかったけど、標準ライブラリには見当たらなかった。 そんなわけで必要な機能を持ったものを作ろうとした結果がこの varsun である。

できること - Features -

  • $foo${bar} を見つけて、それを対応する文字列へと置き換える
  • %foo% も対応。
  • varsun 直下の関数を使うと、Windows なら %foo% を、それ以外は %foo を認識するように自動的に切り替わる。
  • ついでに環境変数展開を標準装備。
    • 使い方の参考でもある。

やりたいこと - TODO -

  • 効率のいい文字列探索
    • さすがに一文字ずつ見てくのは非効率といわざるを得ない
  • マクロ使ってみたい
  • ベンチマーク
    • cargo bench が動かん(´・ω・`)

使い方 - Usage -

extern crate varsun;

// on Linux system.
let homedir = varsun::substitute("$HOME", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => NOne,
    }
});

// on Windows.
let homedir = varsun::substitute("%USERPROFILE%", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

常にPOSIX ($HOGE) を使う - Use POSIX ($HOGE) style always -

extern crate varsun;

// on Linux.
let homedir = varsun::posix::substitute("${HOME}", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

// on Windows.
let homedir = varsun::posix::substitute("${USERPROFILE}", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

常にWindows (%HOGE%) を使う - Use Windows (%HOGE%) style always -

extern crate varsun;

// on Linux.
let homedir = varsun::windows::substitute("%HOME%", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

// on Windows.
let homedir = varsun::windows::substitute("%USERPROFILE%", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

作者 - Author -

TANAKA Kenichi aka chikuchikugonzalez (ちくちく('ω')ごんざれす)

ライセンス - LICENSE -

MIT License

No runtime deps