From 18ad2173816bf455c2dabece9009aae29133b3d3 Mon Sep 17 00:00:00 2001
From: Jonas Maier <>
Date: Wed, 11 Mar 2026 15:32:51 +0100
Subject: first draft of cancellable builtins, kinda shit
---
src/rw.rs | 231 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 231 insertions(+)
create mode 100644 src/rw.rs
(limited to 'src/rw.rs')
diff --git a/src/rw.rs b/src/rw.rs
new file mode 100644
index 0000000..31808fb
--- /dev/null
+++ b/src/rw.rs
@@ -0,0 +1,231 @@
+use core::fmt;
+use std::{
+ fs::File,
+ io::{self, PipeReader, PipeWriter, Read, Write},
+ os::fd::{AsFd, BorrowedFd},
+ process::Stdio,
+};
+
+use nix::poll::{PollFd, PollFlags};
+
+pub enum Input {
+ Stdin,
+ Pipe(PipeReader),
+ File(File),
+}
+
+pub enum Output {
+ Stdout,
+ Pipe(PipeWriter),
+ File(File),
+}
+
+impl From for Stdio {
+ fn from(value: Input) -> Self {
+ match value {
+ Input::Stdin => Stdio::inherit(),
+ Input::Pipe(reader) => reader.into(),
+ Input::File(file) => file.into(),
+ }
+ }
+}
+
+impl From