diff options
| author | Jonas Maier <jonas@x77.dev> | 2026-05-08 22:15:29 +0200 |
|---|---|---|
| committer | Jonas Maier <jonas@x77.dev> | 2026-05-08 22:15:29 +0200 |
| commit | ce5810be396461d4b4edb4eba191f4094e0f97a8 (patch) | |
| tree | 4c9e917471b2e64c1db34cf0744d769e63ed2650 /src/run/builtin.rs | |
| parent | d8712f7ccc8cb26458f3244f6066b9161968f9e1 (diff) | |
| download | pish-ce5810be396461d4b4edb4eba191f4094e0f97a8.tar.gz | |
#16: add break and continue to loops
Diffstat (limited to 'src/run/builtin.rs')
| -rw-r--r-- | src/run/builtin.rs | 38 |
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 |
