diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-05 01:50:16 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-05 01:50:16 +0900 |
| commit | bbb2f9454b6580fcbd337ced61b5a1888d52ce8d (patch) | |
| tree | 45563449df57f63ae4a4d010a3e8e6007518c35b /crates/shirabe/src/io/io_interface.rs | |
| parent | adf14510b00929aaee85ccb8dedf9164878a0164 (diff) | |
| download | php-shirabe-bbb2f9454b6580fcbd337ced61b5a1888d52ce8d.tar.gz php-shirabe-bbb2f9454b6580fcbd337ced61b5a1888d52ce8d.tar.zst php-shirabe-bbb2f9454b6580fcbd337ced61b5a1888d52ce8d.zip | |
refactor(io): model ask_and_validate validators with anyhow::Result
PHP's askAndValidate throws when a validator rejects input. Change the
IOInterface validator callback and return type to anyhow::Result so the
call sites can return Err instead of panic, faithfully modeling the throw
semantics already supported by the Question layer.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/io/io_interface.rs')
| -rw-r--r-- | crates/shirabe/src/io/io_interface.rs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/crates/shirabe/src/io/io_interface.rs b/crates/shirabe/src/io/io_interface.rs index e48f9ce..e33cea2 100644 --- a/crates/shirabe/src/io/io_interface.rs +++ b/crates/shirabe/src/io/io_interface.rs @@ -101,10 +101,10 @@ pub trait IOInterfaceImmutable: std::fmt::Debug { fn ask_and_validate( &self, question: String, - validator: Box<dyn Fn(PhpMixed) -> PhpMixed>, + validator: Box<dyn Fn(PhpMixed) -> anyhow::Result<PhpMixed>>, attempts: Option<i64>, default: PhpMixed, - ) -> PhpMixed; + ) -> anyhow::Result<PhpMixed>; fn ask_and_hide_answer(&self, question: String) -> Option<String>; @@ -279,10 +279,10 @@ impl IOInterfaceImmutable for Rc<RefCell<dyn IOInterface>> { fn ask_and_validate( &self, question: String, - validator: Box<dyn Fn(PhpMixed) -> PhpMixed>, + validator: Box<dyn Fn(PhpMixed) -> anyhow::Result<PhpMixed>>, attempts: Option<i64>, default: PhpMixed, - ) -> PhpMixed { + ) -> anyhow::Result<PhpMixed> { self.borrow() .ask_and_validate(question, validator, attempts, default) } |
