aboutsummaryrefslogtreecommitdiffstats
path: root/src/run/builtin.rs
diff options
context:
space:
mode:
authorJonas Maier <jonas@x77.dev>2026-05-08 22:15:29 +0200
committerJonas Maier <jonas@x77.dev>2026-05-08 22:15:29 +0200
commitce5810be396461d4b4edb4eba191f4094e0f97a8 (patch)
tree4c9e917471b2e64c1db34cf0744d769e63ed2650 /src/run/builtin.rs
parentd8712f7ccc8cb26458f3244f6066b9161968f9e1 (diff)
downloadpish-ce5810be396461d4b4edb4eba191f4094e0f97a8.tar.gz
#16: add break and continue to loops
Diffstat (limited to 'src/run/builtin.rs')
-rw-r--r--src/run/builtin.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/run/builtin.rs b/src/run/builtin.rs
index a52c345..a40ef51 100644
--- a/src/run/builtin.rs
+++ b/src/run/builtin.rs
@@ -856,3 +856,41 @@ impl Builtin for source {
Ok(())
}
}
+
+#[derive(Copy, Clone)]
+pub struct Break;
+
+impl Builtin for Break {
+ fn name(&self) -> &str {
+ "break"
+ }
+
+ fn io(
+ &self,
+ _session: Arc<Mutex<Session>>,
+ _args: &[BString],
+ _stdin: &mut dyn Read,
+ _stdout: &mut dyn Write,
+ ) -> Result {
+ Err(Error::Break)
+ }
+}
+
+#[derive(Copy, Clone)]
+pub struct Continue;
+
+impl Builtin for Continue {
+ fn name(&self) -> &str {
+ "continue"
+ }
+
+ fn io(
+ &self,
+ _session: Arc<Mutex<Session>>,
+ _args: &[BString],
+ _stdin: &mut dyn Read,
+ _stdout: &mut dyn Write,
+ ) -> Result {
+ Err(Error::Continue)
+ }
+} \ No newline at end of file