this post was submitted on 05 Aug 2023
6 points (100.0% liked)

Rust

5771 readers
47 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
 

Im trying to use iced for the gui in an audio plug in I'm building, but I keep seeing discrepancies in how to accomplish this.

On the iced github page, it says that to implement the Sandbox trait, you use this signature: fn view(&self), yet in the documentation it says to use view(&mut self). When I try to use the non-mut version, I get an error saying that it expects self to be mutable.

I also stumbled across iced-pure, which seems like a better idea. But I need to use a NumberInput widget from the iced-aw crate. Unfortunately, these widgets are not pure.

So how do I go about creating a gui using NumberInput? Do I need to create the widgets myself to make them pure? I'd like to use other widgets from the iced-aw crate too, so that wouldn't be ideal

Or do i have to use the mutable version of view? If so, why does github say to use non mutable? Is this specific to certain versions of iced? If the newer version of iced uses a non mutable view function, does that mean it's pure? Have the iced-pure changes been merged into iced?

top 5 comments
sorted by: hot top controversial new old
[–] Stumblinbear@pawb.social 1 points 1 year ago* (last edited 1 year ago) (1 children)

Pure widgets are just ones that don't contain state. You pick which one you need based on which one you need, so in your case you need state because you must store what's within the number input box.

I'm not wholly familiar with iced, but I'd venture to guess the example you looked at didn't need to store state so it was able to use a non-mutable view, whereas you need to store it so that example doesn't exactly work for you. However it could just be a bit out of date, and I'm sure they'd appreciate a PR

[–] Barbacamanitu@lemmy.world 1 points 1 year ago (1 children)

Gotcha. I unfortunately decided to give up on trying to do this in Rust. I'm trying out JUCE since it's industry standard. I'm already bashing my head against the wall with this C++ garbage. Hopefully the gui scene looks better for rust soon

[–] Stumblinbear@pawb.social 1 points 1 year ago (1 children)

I'm actively working on a UI framework, so hopefully it helps, haha

[–] Barbacamanitu@lemmy.world 1 points 1 year ago (1 children)

Good luck with it. What's it called?

[–] Stumblinbear@pawb.social 1 points 1 year ago

Agui, but it's not yet ready for legitimate use. Well, sort of. The engine should be mostly there, I'm just working on integrations with renderers and windowing (winit), now. It doesn't have focusing or accessibility support yet, but that's my next task