Skip to content

Possibly a typo on the "What Unsafe Rust Can Do" page? #299

Closed
@mexus

Description

@mexus

https://github.com/rust-lang/nomicon/blob/0c7e5bd1428e7838252bb57b7f0fbfda4ec82f02/src/what-unsafe-does.md

Here's a paragraph that caused my confusion:

A reference/pointer is "dangling" if it is null or not all of the bytes it points to are part of the same allocation (so in particular they all have to be part of some allocation). The span of bytes it points to is determined by the pointer value and the size of the pointee type. As a consequence, if the span is empty, "dangling" is the same as "non-null". Note that slices and strings point to their entire range, so it's important that the length metadata is never too large (in particular, allocations and therefore slices and strings cannot be bigger than isize::MAX bytes). If for some reason this is too cumbersome, consider using raw pointers.

So, the first sentence states:

A reference/pointer is "dangling" if it is null or ...

And the sentence about an empty span states:

... if the span is empty, "dangling" is the same as "non-null"

Isn't there a contradiction? Shouldn't it be more like "is the same as null" or "non-danling" in the latter sentence?

Or am I missing something?

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions