Messages in this thread | | | From | Trevor Gross <> | Date | Thu, 5 Oct 2023 02:32:29 -0400 | Subject | Re: [PATCH v4 7/7] rust: workqueue: add examples |
| |
On Tue, Oct 3, 2023 at 6:30 PM Alice Ryhl <aliceryhl@google.com> wrote: > On Tue, Oct 3, 2023 at 10:13PM Konstantin Shelekhin <k.shelekhin@ftml.net> wrote: > > +//! #[pin_data] > > +//! struct MyStruct { > > +//! value: i32, > > +//! #[pin] > > +//! work: Work<MyStruct>, > > +//! } > > +//! > > +//! impl_has_work! { > > +//! impl HasWork<Self> for MyStruct { self.work } > > +//! } > > +//! > > +//! impl MyStruct { > > +//! fn new(value: i32) -> Result<Arc<Self>> { > > +//! Arc::pin_init(pin_init!(MyStruct { > > +//! value, > > +//! work <- new_work!("MyStruct::work"), > > +//! })) > > +//! } > > +//! } > > +//!
For what it's worth, I think that using a binding for return items usually looks ever so slightly more clear than passing a multiline argument
fn new(value: i32) -> Result<Arc<Self>> { let tmp = pin_init!(MyStruct { value, work <- new_work!("MyStruct::work") }); Arc::pin_init(tmp) }
| |