-
Notifications
You must be signed in to change notification settings - Fork 13.3k
std: Add {read,write}_vectored
for more types
#59852
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
This commit implements the `{read,write}_vectored` methods on more types in the standard library, namely: * `std::fs::File` * `std::process::ChildStd{in,out,err}` * `std::io::Std{in,out,err}` * `std::io::Std{in,out,err}Lock` * `std::io::Std{in,out,err}Raw` Where supported the OS implementations hook up to native support, otherwise it falls back to the already-defaulted implementation.
r? @sfackler |
(rust_highfive has picked a reviewer for you, use r? to override) |
@bors r+ |
📌 Commit acf3ddb has been approved by |
@@ -13,8 +13,12 @@ impl Stdin { | |||
} | |||
|
|||
pub fn read(&self, data: &mut [u8]) -> io::Result<usize> { | |||
self.read_vectored(&mut [IoVecMut::new(data)]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
are vectored reads somehow more "fundamental" on wasi? might be worth a comment?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They are yeah where at the syscall layer there's only vectored reads/writes, but this is in general just deduplicating code
let ret = fd.write(buf); | ||
fd.into_raw(); // do not close this FD | ||
ret | ||
ManuallyDrop::new(FileDesc::new(libc::STDOUT_FILENO)).write(buf) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this change coming from some other PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nah this is an intended change for this PR
std: Add `{read,write}_vectored` for more types This commit implements the `{read,write}_vectored` methods on more types in the standard library, namely: * `std::fs::File` * `std::process::ChildStd{in,out,err}` * `std::io::Std{in,out,err}` * `std::io::Std{in,out,err}Lock` * `std::io::Std{in,out,err}Raw` Where supported the OS implementations hook up to native support, otherwise it falls back to the already-defaulted implementation.
std: Add `{read,write}_vectored` for more types This commit implements the `{read,write}_vectored` methods on more types in the standard library, namely: * `std::fs::File` * `std::process::ChildStd{in,out,err}` * `std::io::Std{in,out,err}` * `std::io::Std{in,out,err}Lock` * `std::io::Std{in,out,err}Raw` Where supported the OS implementations hook up to native support, otherwise it falls back to the already-defaulted implementation.
Rollup of 18 pull requests Successful merges: - rust-lang#59612 (Use normal newtype_index macro for MIR dataflows) - rust-lang#59675 (Stabilize the `alloc` crate.) - rust-lang#59708 (Mark variables captured by reference as mutable correctly) - rust-lang#59735 (remove lookup_char_pos_adj) - rust-lang#59747 (Copy book.toml unstable book generator) - rust-lang#59796 (Retire `IsNotConst` naming) - rust-lang#59804 (Clean up jobserver integration) - rust-lang#59818 (Eliminate `FnBox` usages from libstd.) - rust-lang#59830 (Fix links on keyword docs.) - rust-lang#59835 (Re-export NonZero signed variant in std) - rust-lang#59852 (std: Add `{read,write}_vectored` for more types) - rust-lang#59855 (Fix attributes position in type declaration) - rust-lang#59858 (Make duplicate matcher bindings a hard error) - rust-lang#59879 (Use SecRandomCopyBytes instead of /dev/urandom on MacOS) - rust-lang#59899 (In `-Zprint-type-size` output, sort enum variants by size.) - rust-lang#59912 (MaybeUninit: remove deprecated functions) - rust-lang#59925 (Fix paste error in split_ascii_whitespace docs.) - rust-lang#59930 (Exclude some copies of old book editions from search engines) Failed merges: r? @ghost
Rollup of 18 pull requests Successful merges: - #59612 (Use normal newtype_index macro for MIR dataflows) - #59675 (Stabilize the `alloc` crate.) - #59708 (Mark variables captured by reference as mutable correctly) - #59735 (remove lookup_char_pos_adj) - #59747 (Copy book.toml unstable book generator) - #59796 (Retire `IsNotConst` naming) - #59804 (Clean up jobserver integration) - #59818 (Eliminate `FnBox` usages from libstd.) - #59830 (Fix links on keyword docs.) - #59835 (Re-export NonZero signed variant in std) - #59852 (std: Add `{read,write}_vectored` for more types) - #59855 (Fix attributes position in type declaration) - #59858 (Make duplicate matcher bindings a hard error) - #59879 (Use SecRandomCopyBytes instead of /dev/urandom on MacOS) - #59899 (In `-Zprint-type-size` output, sort enum variants by size.) - #59912 (MaybeUninit: remove deprecated functions) - #59925 (Fix paste error in split_ascii_whitespace docs.) - #59930 (Exclude some copies of old book editions from search engines) Failed merges: r? @ghost
std: Add `{read,write}_vectored` for more types This commit implements the `{read,write}_vectored` methods on more types in the standard library, namely: * `std::fs::File` * `std::process::ChildStd{in,out,err}` * `std::io::Std{in,out,err}` * `std::io::Std{in,out,err}Lock` * `std::io::Std{in,out,err}Raw` Where supported the OS implementations hook up to native support, otherwise it falls back to the already-defaulted implementation.
std: Add `{read,write}_vectored` for more types This commit implements the `{read,write}_vectored` methods on more types in the standard library, namely: * `std::fs::File` * `std::process::ChildStd{in,out,err}` * `std::io::Std{in,out,err}` * `std::io::Std{in,out,err}Lock` * `std::io::Std{in,out,err}Raw` Where supported the OS implementations hook up to native support, otherwise it falls back to the already-defaulted implementation.
Rollup of 16 pull requests Successful merges: - #59675 (Stabilize the `alloc` crate.) - #59708 (Mark variables captured by reference as mutable correctly) - #59735 (remove lookup_char_pos_adj) - #59747 (Copy book.toml unstable book generator) - #59796 (Retire `IsNotConst` naming) - #59804 (Clean up jobserver integration) - #59818 (Eliminate `FnBox` usages from libstd.) - #59830 (Fix links on keyword docs.) - #59835 (Re-export NonZero signed variant in std) - #59852 (std: Add `{read,write}_vectored` for more types) - #59855 (Fix attributes position in type declaration) - #59858 (Make duplicate matcher bindings a hard error) - #59899 (In `-Zprint-type-size` output, sort enum variants by size.) - #59912 (MaybeUninit: remove deprecated functions) - #59925 (Fix paste error in split_ascii_whitespace docs.) - #59930 (Exclude some copies of old book editions from search engines) Failed merges: r? @ghost
This commit implements the
{read,write}_vectored
methods on more typesin the standard library, namely:
std::fs::File
std::process::ChildStd{in,out,err}
std::io::Std{in,out,err}
std::io::Std{in,out,err}Lock
std::io::Std{in,out,err}Raw
Where supported the OS implementations hook up to native support,
otherwise it falls back to the already-defaulted implementation.