src/unsafe-deep-dive/introduction/warm-up/unsafe-block.md
# // Copyright 2026 Google LLC
# // SPDX-License-Identifier: Apache-2.0
#
fn main() {
let numbers = vec![0, 1, 2, 3, 4];
let i = numbers.len() / 2;
let x = *numbers.get_unchecked(i);
assert_eq!(i, x);
}
Walk through the code. Confirm that the audience is familiar with the dereference operator.
Attempt to compile the code, trigger the compiler error.
Add the unsafe block:
# // Copyright 2026 Google LLC
# // SPDX-License-Identifier: Apache-2.0
#
# fn main() {
# let numbers = vec![0, 1, 2, 3, 4];
# let i = numbers.len() / 2;
#
let x = unsafe { *numbers.get_unchecked(i) };
# assert_eq!(i, x);
# }
Prompt audience for a code review. Guide learners towards adding a safety comment.
Add the safety comment:
# // Copyright 2026 Google LLC
# // SPDX-License-Identifier: Apache-2.0
#
// SAFETY: `i` must be within 0..numbers.len()
Suggested Solution
# // Copyright 2026 Google LLC
# // SPDX-License-Identifier: Apache-2.0
#
fn main() {
let numbers = vec![0, 1, 2, 3, 4];
let i = numbers.len() / 2;
let x = unsafe { *numbers.get_unchecked(i) };
assert_eq!(i, x);
}