wana_kana_rust icon indicating copy to clipboard operation
wana_kana_rust copied to clipboard

API suggestion: traits implemented for &str and char for more ergonomic operations

Open TianyiShi2001 opened this issue 4 years ago • 2 comments

I was reinventing the wheel yesterday (https://github.com/TianyiShi2001/romkan ) before I realize there is already a kana-romaji conversion library here, and this library proved to be faster than mine. However, I think my approach, which is to implement a Trait directly on &str which allows conversion between kana and romaji, is more ergonomic and idiomatic, since it is similar to the std::str's .to_lowercase and .to_uppercase

use romkan::Romkan;

fn main() {
    println!("{}", "kyouhatennkigaiidesune".to_hiragana());
    println!("{}", "きょうはてんきがいいですね".to_romaji());
}

// compared to

use wana_kana::{to_hiragana::to_hiragana, to_romaji::to_romaji};

fn main() {
    println!("{}", to_hiragana("kyouhatennkigaiidesune"));
    println!("{}", to_romaji("きょうはてんきがいいですね"));
}

Similarly, methods such as .is_hiragana implemented for char will be more ergonomic given there exists .is_alphabetic, .is_digit etc. on char in std.

Would you like these kinds of traits to be added to your crate?

TianyiShi2001 avatar Jun 18 '21 15:06 TianyiShi2001

Thanks for the suggestion, I think this API would be much better, than the existing one.

PSeitz avatar Jun 18 '21 16:06 PSeitz

Great, I will start working on this.

TianyiShi2001 avatar Jun 18 '21 16:06 TianyiShi2001