Skip to content
Commit 5bc81841 authored by Obei Sideg's avatar Obei Sideg Committed by Miguel Ojeda
Browse files

rust: types: add `try_from_foreign()` method

Currently `ForeignOwnable::from_foreign()` only works for non-null
pointers for the existing `impl`s (e.g. `Box`, `Arc`). In turn, this
means callers may write code like:

```rust
// `p` is a pointer that may be null.
if p.is_null() {
    None
} else {
    unsafe { Some(Self::from_foreign(ptr)) }
}
```

Add a `try_from_foreign()` method to the trait with a default
implementation that returns `None` if `ptr` is null, otherwise
`Some(from_foreign(ptr))`, so that it can be used by callers instead.

Link: https://github.com/Rust-for-Linux/linux/issues/1057


Signed-off-by: default avatarObei Sideg <linux@obei.io>
Reviewed-by: default avatarAlice Ryhl <aliceryhl@google.com>
Reviewed-by: default avatarTrevor Gross <tmgross@umich.edu>
Link: https://lore.kernel.org/r/0100018d53f737f8-80c1fe97-0019-40d7-ab69-b1b192785cd7-000000@email.amazonses.com


[ Fixed intra-doc links, improved `SAFETY` comment and reworded commit. ]
Signed-off-by: default avatarMiguel Ojeda <ojeda@kernel.org>
parent e3c3d345
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment