From ce5810be396461d4b4edb4eba191f4094e0f97a8 Mon Sep 17 00:00:00 2001 From: Jonas Maier Date: Fri, 8 May 2026 22:15:29 +0200 Subject: #16: add break and continue to loops --- src/run/builtin.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src/run/builtin.rs') 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>, + _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>, + _args: &[BString], + _stdin: &mut dyn Read, + _stdout: &mut dyn Write, + ) -> Result { + Err(Error::Continue) + } +} \ No newline at end of file -- cgit v1.2.3