async-process
async-process copied to clipboard
`ChildStdin`, et cetera should implement `AsRawFd/AsRawHandle`
I was going to try to implement I/O safety types on the handles as per sunfishcode/io-lifetimes#38, but then I realized that ChildStdin, ChildStdout and ChildStderr don't implement AsRawFd at all.
I believe that this is due to the fact that Unblock is used to wrap the inner std type, which makes it difficult to access the methods of the inner type. I see three possible ways to resolve this:
- On Windows, wrap
ChildStd*in anArcthat is stored in the structure as well as theUnblock, so that methods on the inner type can be accessed more easily. - Make it easier to access the inner file descriptor for
Unblocktypes. We could potentially implementAsRawHandleonUnblock<T: AsRawHandle>that panics if the inner type is not accessible, or maybe some kind ofget_ref(&self) -> Option<&T>general purpose method. - Implement
AsRawFdonunix, since it is easy to get the inner type viaasync_io::Async, but don't implement the corresponding types on Windows.
At this time, I tend to prefer the third (unix only). (Eventually, we probably need to implement them on windows, but there is no need to rush...)