Crate raylib[][src]

Expand description


raylib is a safe Rust binding to Raylib, a C library for enjoying games programming.

To get started, take a look at the init_window function. This initializes Raylib and shows a window, and returns a RaylibHandle. This handle is very important, because it is the way in which one accesses the vast majority of Raylib’s functionality. This means that it must not go out of scope until the game is ready to exit. You will also recieve a !Send and !Sync RaylibThread required for thread local functions.

For more control over the game window, the init function will return a RaylibBuilder which allows for tweaking various settings such as VSync, anti-aliasing, fullscreen, and so on. Calling RaylibBuilder::build will then provide a RaylibHandle.

Some useful constants can be found in the consts module, which is also re-exported in the prelude module. In most cases you will probably want to use raylib::prelude::*; to make your experience more smooth.


The classic “Hello, world”:

use raylib::prelude::*;

fn main() {
    let (mut rl, thread) = raylib::init()
        .size(640, 480)
        .title("Hello, World")
    while !rl.window_should_close() {
        let mut d = rl.begin_drawing(&thread);
        d.draw_text("Hello, world!", 12, 12, 20, Color::BLACK);


pub use crate::core::collision::*;
pub use crate::core::file::*;
pub use crate::core::logging::*;
pub use crate::core::misc::get_random_value;
pub use crate::core::misc::open_url;
pub use crate::core::*;


Various constant enums to use with raylib

Easing and interpolation helpers.

The raw, unsafe FFI binding, in case you need that escape hatch or the safe layer doesn’t provide something you need.

The raylib-rs prelude.