Не пудри себе мозги и возьми уже готовую безопасную обёртку над raylib
https://crates.io/crates/raylib
А гайд по работе с unsafe - это rustonomicon
unsafe сам по себе просто позволяет использовать сырые указатели + вызывать другие unsafe функции.
Безопасная обётка - это когда ты при помощи типов и всяких валидаций гарантируешь корректное использование.
Вот пример из того что выше:
use raylib::prelude::*;
fn main() {
let (mut rl, thread) = raylib::init()
.size(640, 480)
.title("Hello, World")
.build();
while !rl.window_should_close() {
let mut d = rl.begin_drawing(&thread);
d.clear_background(Color::WHITE);
d.draw_text("Hello, world!", 12, 12, 20, Color::BLACK);
}
}
Если для вас это магия, то тогда нужно чуть глубже изучить Rust и посмотреть в исходники.
На будущее: не пишите огромную портянку текста с кучей вопросов, а пишите только то что непосредственно относится к основному вопросу.
Другие вопросы задавайте отдельно.