diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-07-11 16:03:05 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-07-11 16:03:05 +0900 |
| commit | 1ec2220def43e37e5a65b96dde93c19b493258f4 (patch) | |
| tree | ecb5188e36a52c31a781117807801e3ac344a541 /crates/shirabe/src/console/application.rs | |
| parent | 5d4f18559c2d07c8f05d6585ffc06866411c5a0f (diff) | |
| download | php-shirabe-1ec2220def43e37e5a65b96dde93c19b493258f4.tar.gz php-shirabe-1ec2220def43e37e5a65b96dde93c19b493258f4.tar.zst php-shirabe-1ec2220def43e37e5a65b96dde93c19b493258f4.zip | |
feat(completion): thread Rc<InputOption> through suggest_options
InputDefinition stores options as Rc<InputOption> for sharing, so
CompletionSuggestions::suggest_option[s] now accepts Rc<InputOption>
instead of owned values, resolving the ownership mismatch left as a
todo!() in Application::complete and CompleteCommand.
Diffstat (limited to 'crates/shirabe/src/console/application.rs')
| -rw-r--r-- | crates/shirabe/src/console/application.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/crates/shirabe/src/console/application.rs b/crates/shirabe/src/console/application.rs index 5591c84b..86639444 100644 --- a/crates/shirabe/src/console/application.rs +++ b/crates/shirabe/src/console/application.rs @@ -718,11 +718,14 @@ impl Application { } if CompletionInput::TYPE_OPTION_NAME == input.get_completion_type() { - // $suggestions->suggestOptions($this->getDefinition()->getOptions()); - // TODO(review): get_options() yields Rc<InputOption> (shared, non-Clone) while - // suggest_options() consumes owned InputOption values; an ownership/clone strategy - // for InputOption is needed. - suggestions.suggest_options(todo!("owned options from get_definition().get_options()")); + let options: Vec<std::rc::Rc<InputOption>> = self + .get_definition() + .borrow() + .get_options() + .values() + .cloned() + .collect(); + suggestions.suggest_options(options); return Ok(()); } |
