Struct ouroboros_examples::ouroboros_impl_chain_hack::ChainHack  [−][src]
pub struct ChainHack { /* fields omitted */ }Expand description
A chain of references, where c references b which references a. This is an example of a struct which requires using chain_hack as of the time this was written.
Implementations
Constructs a new instance of this self-referential struct. (See also ChainHackBuilder::build()). Each argument is a field of the new struct. Fields that refer to other fields inside the struct are initialized using functions instead of directly passing their value. The arguments are as follows:
| Argument | Suggested Use | 
|---|---|
a | Directly pass in the value this field should contain | 
b_builder | Use a function or closure: (a: &_) -> b: _ | 
c_builder | Use a function or closure: (b: &_) -> c: _ | 
Constructs a new instance of this self-referential struct. (See also ChainHackAsyncBuilder::build()). Each argument is a field of the new struct. Fields that refer to other fields inside the struct are initialized using functions instead of directly passing their value. The arguments are as follows:
| Argument | Suggested Use | 
|---|---|
a | Directly pass in the value this field should contain | 
b_builder | Use a function or closure: (a: &_) -> b: _ | 
c_builder | Use a function or closure: (b: &_) -> c: _ | 
(See also ChainHackTryBuilder::try_build().) Like new, but builders for self-referencing fields can return results. If any of them fail, Err is returned. If all of them succeed, Ok is returned. The arguments are as follows:
| Argument | Suggested Use | 
|---|---|
a | Directly pass in the value this field should contain | 
b_builder | Use a function or closure: (a: &_) -> Result<b: _, Error_> | 
c_builder | Use a function or closure: (b: &_) -> Result<c: _, Error_> | 
(See also ChainHackTryBuilder::try_build_or_recover().) Like try_new, but all head fields are returned in the case of an error. The arguments are as follows:
| Argument | Suggested Use | 
|---|---|
a | Directly pass in the value this field should contain | 
b_builder | Use a function or closure: (a: &_) -> Result<b: _, Error_> | 
c_builder | Use a function or closure: (b: &_) -> Result<c: _, Error_> | 
pub(crate) async fn try_new_async<Error_>(
    a: Box<i32>, 
    b_builder: impl for<'this> FnOnce(&'this i32) -> Pin<Box<dyn Future<Output = Result<Arc<&'this i32>, Error_>> + 'this>>, 
    c_builder: impl for<'this> FnOnce(&'this &'this i32) -> Pin<Box<dyn Future<Output = Result<Rc<&'this i32>, Error_>> + 'this>>
) -> Result<ChainHack, Error_>
pub(crate) async fn try_new_async<Error_>(
    a: Box<i32>, 
    b_builder: impl for<'this> FnOnce(&'this i32) -> Pin<Box<dyn Future<Output = Result<Arc<&'this i32>, Error_>> + 'this>>, 
    c_builder: impl for<'this> FnOnce(&'this &'this i32) -> Pin<Box<dyn Future<Output = Result<Rc<&'this i32>, Error_>> + 'this>>
) -> Result<ChainHack, Error_>(See also ChainHackAsyncTryBuilder::try_build().) Like new, but builders for self-referencing fields can return results. If any of them fail, Err is returned. If all of them succeed, Ok is returned. The arguments are as follows:
| Argument | Suggested Use | 
|---|---|
a | Directly pass in the value this field should contain | 
b_builder | Use a function or closure: (a: &_) -> Result<b: _, Error_> | 
c_builder | Use a function or closure: (b: &_) -> Result<c: _, Error_> | 
pub(crate) async fn try_new_or_recover_async<Error_>(
    a: Box<i32>, 
    b_builder: impl for<'this> FnOnce(&'this i32) -> Pin<Box<dyn Future<Output = Result<Arc<&'this i32>, Error_>> + 'this>>, 
    c_builder: impl for<'this> FnOnce(&'this &'this i32) -> Pin<Box<dyn Future<Output = Result<Rc<&'this i32>, Error_>> + 'this>>
) -> Result<ChainHack, (Error_, Heads)>
pub(crate) async fn try_new_or_recover_async<Error_>(
    a: Box<i32>, 
    b_builder: impl for<'this> FnOnce(&'this i32) -> Pin<Box<dyn Future<Output = Result<Arc<&'this i32>, Error_>> + 'this>>, 
    c_builder: impl for<'this> FnOnce(&'this &'this i32) -> Pin<Box<dyn Future<Output = Result<Rc<&'this i32>, Error_>> + 'this>>
) -> Result<ChainHack, (Error_, Heads)>(See also ChainHackAsyncTryBuilder::try_build_or_recover().) Like try_new, but all head fields are returned in the case of an error. The arguments are as follows:
| Argument | Suggested Use | 
|---|---|
a | Directly pass in the value this field should contain | 
b_builder | Use a function or closure: (a: &_) -> Result<b: _, Error_> | 
c_builder | Use a function or closure: (b: &_) -> Result<c: _, Error_> | 
Provides limited immutable access to a. This method was generated because the contents of a are immutably borrowed by other fields.
Provides limited immutable access to a. This method was generated because the contents of a are immutably borrowed by other fields.
Provides limited immutable access to b. This method was generated because the contents of b are immutably borrowed by other fields.
Provides limited immutable access to b. This method was generated because the contents of b are immutably borrowed by other fields.
Provides an immutable reference to c. This method was generated because c is a tail field.
Provides an immutable reference to c. This method was generated because c is a tail field.
pub(crate) fn with_c_mut<'outer_borrow, ReturnType>(
    &'outer_borrow mut self, 
    user: impl for<'this> FnOnce(&'outer_borrow mut Rc<&'this i32>) -> ReturnType
) -> ReturnType
pub(crate) fn with_c_mut<'outer_borrow, ReturnType>(
    &'outer_borrow mut self, 
    user: impl for<'this> FnOnce(&'outer_borrow mut Rc<&'this i32>) -> ReturnType
) -> ReturnTypeProvides a mutable reference to c. This method was generated because c is a tail field. No borrow_c_mut function was generated because Rust’s borrow checker is currently unable to guarantee that such a method would be used safely.
pub(crate) fn with<'outer_borrow, ReturnType>(
    &'outer_borrow self, 
    user: impl for<'this> FnOnce(BorrowedFields<'outer_borrow, 'this>) -> ReturnType
) -> ReturnType
pub(crate) fn with<'outer_borrow, ReturnType>(
    &'outer_borrow self, 
    user: impl for<'this> FnOnce(BorrowedFields<'outer_borrow, 'this>) -> ReturnType
) -> ReturnTypeThis method provides immutable references to all tail and immutably borrowed fields.
pub(crate) fn with_mut<'outer_borrow, ReturnType>(
    &'outer_borrow mut self, 
    user: impl for<'this> FnOnce(BorrowedMutFields<'outer_borrow, 'this>) -> ReturnType
) -> ReturnType
pub(crate) fn with_mut<'outer_borrow, ReturnType>(
    &'outer_borrow mut self, 
    user: impl for<'this> FnOnce(BorrowedMutFields<'outer_borrow, 'this>) -> ReturnType
) -> ReturnTypeThis method provides mutable references to all tail fields.
This function drops all internally referencing fields and returns only the head fields of this struct.
Auto Trait Implementations
impl !RefUnwindSafe for ChainHackimpl UnwindSafe for ChainHack