Skip to content

tsoding/Crust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Rules of Crust

The list of rules may change. The goal is to make programming in Rust fun.

Currently used in the B Compiler Project.

1. No std.

Use #![no_std] attribute to enforce this rule. core is allowed because there is currently no stable way to disable it. Using libc is allowed since rustc links with it anyway. But since no cargo is allowed you have to declare the necessary libc functions yourself in your crate.

You may also consider enabling #![no_main] and provide your custom C-style entry point to be able to get an access to command line arguments.

2. Every function is unsafe.

Every single user-made function must be marked as unsafe.

3. Raw pointers instead of references.

Raw pointers instead of references must be used for:

  1. Parameters and results of all the user-made functions;
  2. Members of user-made structs and enums;
  3. User-made global variables;

In the bodies of the functions references are allowed to be used for local variables and intermediate value.

4. No cargo.

Build with rustc directly pure C-style. Linking with external C libraries is encouraged.

5. Only Edition 2021.

Newer additions are too hostile towards Crust.

6. Copy by default.

All user-made structs and enums must be #[derive(Clone, Copy)]

7. Public by default.

Everything is pub by default.

About

Rust that is actually Fun

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages