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}