/ryzhda

Rust programming in Bulgarian.

Primary LanguageRustDo What The F*ck You Want To Public LicenseWTFPL

ryzhda

Aren't you изморен from writing Rust programs in English? Do you like saying "опаа" a lot? Would you like to try something different, in an exotic and funny-sounding language? Would you want to bring some Bulgarian touch to your programs?

ryzhda (Bulgarian for Rust) is here to save your day, as it allows you to write Rust programs in Bulgarian, using Bulgarian keywords, Bulgarian function names, Bulgarian idioms.

Here's an example of what can be achieved with Ryzhda:

trait and impl (aka описание и реализация)

ryzhda::ryzhda! {
    външна щайга ryzhda;

    използвай std::collections::Речник;

    описание КлючСтойност {
        функция писане(&себе_си, ключ: Низ, стойност: Низ);
        функция взимане(&себе_си, ключ: Низ) -> Резултат<Опция<&Низ>, Низ>;
    }

    статичнa изменяема РЕЧНИК: Опция<Речник<Низ, Низ>> = Нищо;
    структура Конкретна;
    реализация КлючСтойност за Конкретна {
        функция писане(&себе_си, ключ: Низ, стойност: Низ) {
            нека речн = опасно { РЕЧНИК.взимане_или_вмъкване_с(ПоПодразбиране::по_подразбиране) };
            речн.вмъкване(ключ, стойност);
        }
        функция взимане(&себе_си, ключ: Низ) -> Резултат<Опция<&Низ>, Низ> {
            ако нека Нещо(речн) = опасно { РЕЧНИК.като_референция() } {
                Добре(речн.взимане(&ключ))
            } или {
                Греш("липсва в речник".във())
            }
        }
    }

    публично(щайга) функция може_би(i: u32) -> Опция<Резултат<u32, Низ>> {
        ако i % 2 == 1 {
            ако i == 42 {
                Нещо(Греш(Низ::от("опа")))
            } или {
                Нещо(Добре(33))
            }
        } или {
            Нищо
        }
    }

    асинх функция пример() {}

    асинх функция пример2() {
        пример().изчакване;
    }

    функция главна() {
        нека изменяема x = 31;
        съвпадение x {
            42 => {
                изписванелин!("хубава работа");
            }
            _ => {
                изписванелин!("а такааа");
            }
        }

        за i в 0..10 {
            нека стойност = цикъл {
                прекъсване i;
            };

            докато x < стойност {
                x += 1;
            }

            x = ако нека Нещо(резултат) = може_би(i) {
                резултат.разопаковане()
            } или {
                12
            };
        }
    }
}

Other languages