PSeitz / wana_kana_rust

Utility library for checking and converting between Japanese characters - Hiragana, Katakana - and Romaji
MIT License
70 stars 14 forks source link

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

Closed TianyiShi2001 closed 1 month ago

TianyiShi2001 commented 3 years ago

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?

PSeitz commented 3 years ago

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

TianyiShi2001 commented 3 years ago

Great, I will start working on this.