Rust-библиотека для записи чисел, сумм и дат прописью на русском. Учитывает род числительных и формы существительных. Подходит для счетов, платёжных документов и голосовых сообщений.
cargo add chislo
no_std · WASM · словарь без аллокаций
Введите число, сумму или дату. Библиотека преобразует их прямо в браузере через WebAssembly.
Целые и десятичные числа с грамматическим родом и склонением существительного.
int_to_words_gender(n, gender); ordinal(n, gender); decimal_to_words(s); decline(n, one, two, five);
Сумма прописью с правильным склонением валюты и копеек — для чеков, счетов и платёжек.
money_from_str("1234.56", &RUB);
Целые и дробные проценты с верным согласованием слова «процент».
percent(42); percent_decimal("42.25");
Простые и смешанные дроби. Оставьте целую часть равной нулю для простой дроби.
fraction(1, 2); mixed_fraction(3, 2, 5);
Длительность из часов-минут-секунд или из общего числа секунд.
duration_hms(1, 30, 0); duration_from_secs(3_661);
Дата, год и время прописью — для договоров и документов.
date_to_words(2026, 4, 10); year_to_words(2026); time_to_words(14, 30);
Загрузка WebAssembly…
Количественные и порядковые числительные, суммы, проценты, дроби, длительность и даты.
Три рода (один / одна / одно), выбор формы существительного по числу и правильное согласование десятичных (одна целая, а не один целых).
Форматирование сумм, процентов, длительности, дат, времени и дробей для документов.
RUB, USD, EUR, GBP, CNY, JPY, KZT, BYN, UAH, CHF, AED из коробки, плюс поиск по ISO 4217 и свои валюты.
Все данные живут в const; обёртки Display пишут прямо в write! без лишней String.
no_std с alloc, опциональный rust_decimal и WASM-биндинги через wasm-bindgen.
Целые до квинтиллионов; словарь разрядов доходит до 10³⁹ (дуодециллионы).
Добавьте крейт и начните преобразовывать числа.
use chislo::{int_to_words, decline, ordinal, money, percent, fraction, duration_hms, date_to_words, Gender, RUB}; int_to_words(42); // "сорок два" decline(5, "рубль", "рубля", "рублей"); // "рублей" ordinal(2026, Gender::Masculine); // "две тысячи двадцать шестой" money(1234, 56, &RUB); // "…тридцать четыре рубля пятьдесят шесть копеек" percent(42); // "сорок два процента" fraction(1, 2); // "одна вторая" duration_hms(1, 30, 0); // "один час тридцать минут" date_to_words(2026, 4, 10); // "десятое апреля две тысячи двадцать шестого года"