Skip to content

Simplify the unsafe slice construction example - #3317

Draft
haranishi wants to merge 1 commit into
google:mainfrom
haranishi:fix/unsafe-array-2733
Draft

haranishi wants to merge 1 commit into
google:mainfrom
haranishi:fix/unsafe-array-2733

Conversation

@haranishi

Copy link
Copy Markdown

Use a single four-element u16 array to demonstrate the bytes-versus-elements mistake in slice::from_raw_parts. Removing KeyPair, repr(C), and the adjacent private-key array keeps the example focused on the unsafe function's safety requirements. The speaker notes identify the length mismatch and give a live edit that restores the correct slice length.

The starting example intentionally remains unsound, as required by the lesson.

Fixes #2733.

Validation:

  • Miri with nightly-2025-09-01 reports the expected undefined behavior: the slice requires 16 bytes but the array provides 8.
  • Applying the speaker-note edit (four elements) passes Miri and prints [1, 2, 3, 4].
  • mdbook build, including the local link check.
  • mdbook serve: the changed page returns HTTP 200 with the simplified example and updated notes.
  • dprint check src/unsafe-rust/unsafe-functions/calling.md and git diff --check.

Local setup: cargo xtask install-tools hit a thiserror_impl E0463 error in Bazel on macOS. The repository tool versions were installed with Cargo for the checks above.

@google-cla

google-cla Bot commented Oct 11, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"Calling unsafe functions" example is confusing

1 participant