Skip to content

gavadinov/ryzhda

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Rust programming in Bulgarian.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%