Skip to content

Commit

Permalink
Merge pull request #4148 from rust-lang/unsafe-fn-blocks-separation
Browse files Browse the repository at this point in the history
Rust 2024: distinguish `unsafe fn` vs. `unsafe` blocks
  • Loading branch information
chriskrycho authored Dec 9, 2024
2 parents 5f1b7ab + 6f0d1f8 commit 2a4fb72
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions src/ch20-01-unsafe-rust.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,9 +186,14 @@ With the `unsafe` block, we’re asserting to Rust that we’ve read the functio
documentation, we understand how to use it properly, and we’ve verified that
we’re fulfilling the contract of the function.

Bodies of unsafe functions are effectively `unsafe` blocks, so to perform other
unsafe operations within an unsafe function, we don’t need to add another
`unsafe` block.
> Note: In earlier versions of Rust, the body of an unsafe function was treated
> as an `unsafe` block, so you could perform any unsafe operation within the
> body of an `unsafe` function. In later versions of Rust, the compiler will
> warn you that you need to use an `unsafe` block to perform unsafe operations
> in the body of an unsafe function. This is because Rust now distinguishes
> between `unsafe fn`, which defines what you need to do to call the function
> safely, and an `unsafe` block, where you actually uphold that “contract” the
> function establishes.
#### Creating a Safe Abstraction over Unsafe Code

Expand Down

0 comments on commit 2a4fb72

Please sign in to comment.