...instead of just from function pointers.
I'm making this change not because I actually want to pass a closure,
but to make passing a single fixed function work. This commit also
simplifies the scrollable example slightly, and without the other half
of this change that simplified example fails to compile with:
```
error[E0277]: the trait bound `iced::theme::ProgressBar: From<for<'a> fn(&'a Theme) -> iced::widget::progress_bar::Appearance {progress_bar_custom_style}>` is not satisfied
--> examples/scrollable/src/main.rs:292:28
|
292 | .style(progress_bar_custom_style)
| ----- ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `From<for<'a> fn(&'a Theme) -> iced::widget::progress_bar::Appearance {progress_bar_custom_style}>` is not implemented for `iced::theme::ProgressBar`
| |
| required by a bound introduced by this call
|
= help: the trait `From<for<'a> fn(&'a Theme) -> iced::widget::progress_bar::Appearance>` is implemented for `iced::theme::ProgressBar`
= note: required for `for<'a> fn(&'a Theme) -> iced::widget::progress_bar::Appearance {progress_bar_custom_style}` to implement `Into<iced::theme::ProgressBar>`
note: required by a bound in `iced::widget::ProgressBar::<Renderer>::style`
--> /home/marienz/src/iced/widget/src/progress_bar.rs:77:21
|
77 | style: impl Into<<Renderer::Theme as StyleSheet>::Style>,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `ProgressBar::<Renderer>::style`
```
This happens because `progress_bar_custom_style` by itself is a function
item, which is typically coerced to a function pointer when one is
needed, but not in this case. It is possible to work around this on the
caller's side, but especially since the compiler diagnostic for this is
a bit rough (see https://github.com/rust-lang/rust/issues/100116) let's
try to make it work out of the box.
For most widgets, `Style` only requires `Default`. A few require
`Clone`. Only this one requires `Copy`.
Some of the types in the default theme has a custom variant requiring
`Box<dyn Trait>`, or `Rc<dyn Trait>` to provide `Clone`, but this isn't
possible if `Copy` is required.
It would be good to also address the inconsistency of requiring `Clone`
in some places and not others.
This removes `style/src/text.rs` which is unused in this branch and thus
confusing. If there's a reason to keep it, that can be removed from the
change.