Vzhledem k tomu ze to vypadá jako kopie jazyka Erlang, dovolim jsi odpovědět.
Jedna se o defaultni větev. Když pravidla před tim nezaberou, tak udělej tohle.
Pokud takova větev v rozhodování není a nic nezabere, v Erlangu se vyvolá výjimka. Tady nevím.
Ty funkce co se s nimi muže pracovat jako s daty jako by z oka vypadly funs z Erlangu.
Však se v článku píše: "Ve skutečnosti překladač kontroluje, zda je _ použit, protože je vyžadováno, aby větve v konstrukci match pokryly všechny možné hodnoty testovaného výrazu"
a hned pod tím je ukázka. Takže to vypadá, že Rust si to kontroluje, Erlang ne (vůbec ne?) a C na to kašle a jen někdy vypíše warning, když se dobře nastaví přepínače. Těžko říct, co je nejlepší.
Rust kontroluje jestli jsou pokryty všechny možnosti a že všechny větve vrací stejný datový typ. Jde to docela ruku v ruce. Je to někdy docela otrava když vím, že nějaká možnost nemůže nastat (třeba x%2 je jen 0 nebo 1, ale match vyžaduje i vše ostatní). Tam se dá použít macro třeba unreachable!() nebo panic!() které obě mají univerzální návratovou hodnotu a schodí program pokud na ně dojde.
Co se '_' týče, je třeba to brát jako pattern. '_' nevytváří žádnou dočasnou proměnnou. Stejně tak by se pro vyčerpání všech možností dala proměnná pojmenovat (nebo všechny hodnoty pokrýt ručně). Patterny se pak vyskytují i u deklarací proměnných. Docela dobré když funkce vrací enum s několika hodnotami a já chci jen jednu. Nebo pro for cylkus když nijak nepotřebuju i.