reword the paragraph on file description ownership
This commit is contained in:
parent
03c28d5626
commit
85e6e82f93
1 changed files with 10 additions and 9 deletions
|
@ -263,15 +263,16 @@
|
||||||
//! allocator or a memory mapping library) and now accessing the file descriptor will interfere in
|
//! allocator or a memory mapping library) and now accessing the file descriptor will interfere in
|
||||||
//! arbitrarily destructive ways with that other library.
|
//! arbitrarily destructive ways with that other library.
|
||||||
//!
|
//!
|
||||||
//! Note that this does not talk about performing other operations on the file descriptor, such as
|
//! Note that exclusive ownership of a file descriptor does *not* imply exclusive ownership of the
|
||||||
//! reading or writing. For example, on Unix, the [`OwnedFd`] and [`BorrowedFd`] types from the
|
//! underlying kernel object that the file descriptor references (also called "file description" on
|
||||||
//! standard library do *not* exclude that there is other code that reads or writes the same
|
//! some operating systems). An owned file descriptor can have duplicates, i.e., other file
|
||||||
//! underlying object, and indeed there exist safe functions like `BorrowedFd::try_clone_to_owned`
|
//! descriptors that share the same kernel object. The exact rules around ownership of kernel
|
||||||
//! that can be used to read or write an object even after the end of the borrow. However, user code
|
//! objects are [still unclear](https://github.com/rust-lang/rust/issues/114167). Until that is
|
||||||
//! might want to rely on keeping the object behind a file descriptor completely private and
|
//! clarified, the general advice is not to perform *any* operations on file descriptors that were
|
||||||
//! protected against reads or writes from other parts of the program. Whether that is sound is
|
//! never borrowed to or owned by you. In other words, receiving a borrowed file descriptor *does*
|
||||||
//! [currently unclear](https://github.com/rust-lang/rust/issues/114167). Certainly, `OwnedFd` as a
|
//! give you the right to make a duplicate and use that duplicate beyond the end of the borrow, but
|
||||||
//! type does not provide any promise that the underlying file descriptor has not been cloned.
|
//! nothing gives you the right to just `write` to a file descriptor that never even got borrowed to
|
||||||
|
//! you.
|
||||||
//!
|
//!
|
||||||
//! [`File`]: crate::fs::File
|
//! [`File`]: crate::fs::File
|
||||||
//! [`TcpStream`]: crate::net::TcpStream
|
//! [`TcpStream`]: crate::net::TcpStream
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue