| use core::convert::Infallible; |
| #[must_use = "Daemon::ready must be called"] |
| pub fn new<F: FnOnce(Daemon) -> Infallible>(f: F) -> Result<Infallible> { |
| let [read_pipe, write_pipe] = pipes; |
| if unsafe { clone(CloneFlags::empty())? } == 0 { |
| let _ = close(read_pipe); |
| // TODO: Replace Infallible with the never type once it is stabilized. |
| let _ = close(write_pipe); |
| let res = read(read_pipe, &mut data); |
| let _ = close(read_pipe); |
| pub fn ready(self) -> Result<()> { |
| let res = write(self.write_pipe, &[0]); |
| let _ = close(self.write_pipe); |