Skip to content

ChildStdin, et cetera should implement AsRawFd/AsRawHandle #22

@notgull

Description

@notgull

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 an Arc that is stored in the structure as well as the Unblock, so that methods on the inner type can be accessed more easily.
  • Make it easier to access the inner file descriptor for Unblock types. We could potentially implement AsRawHandle on Unblock<T: AsRawHandle> that panics if the inner type is not accessible, or maybe some kind of get_ref(&self) -> Option<&T> general purpose method.
  • Implement AsRawFd on unix, since it is easy to get the inner type via async_io::Async, but don't implement the corresponding types on Windows.

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