Skip to main content

safe_rust/
lib.rs

1//! # safe-rust
2//!
3//! `safe-rust` is a safety-oriented utility crate that ensures your Rust
4//! expressions are evaluated in a *safe* context.
5//!
6//! This crate provides a single macro, [`safe!`], which guarantees that the
7//! enclosed expression is handled with the highest level of care.
8//!
9//! ## Why use `safe-rust`?
10//!
11//! - Rust is safe — but sometimes you want to be *extra sure*.
12//! - Improves confidence when reading critical code paths.
13//! - Clearly communicates intent: *this code is safe*.
14//!
15//! ## Guarantees
16//!
17//! - Zero runtime overhead
18//! - Zero allocations
19//! - Zero unsafe code
20//! - Zero side effects
21//!
22//! ## Non-Goals
23//!
24//! - Performance optimizations
25//! - Additional safety checks
26//! - Doing anything exceptional
27//!
28//! ## Example
29//!
30//! ```rust
31//! use safe_rust::safe;
32//!
33//! let value = safe!(2 + 2);
34//! assert_eq!(value, 4);
35//! ```
36//!
37//! Use responsibly.
38
39/// Ensures that an expression is evaluated safely.
40///
41/// This macro evaluates the given expression and returns its result,
42/// preserving all safety guarantees provided by Rust.
43///
44/// # Example
45///
46/// ```rust
47/// use safe_rust::safe;
48///
49/// let sum = safe!(1 + 1);
50/// assert_eq!(sum, 2);
51/// ```
52#[macro_export]
53macro_rules! safe {
54    ($e:expr) => {
55        ($e)
56    };
57}
58
59#[cfg(test)]
60mod tests {
61    use super::*;
62
63    #[test]
64    fn is_it_safe() {
65        let add = |x, y| x + y;
66
67        let result = safe!(add(2, 2));
68
69        assert_eq!(result, 4);
70    }
71}