#structs #borrowing #circular #utility #simple

message_to_parent

一个简单的库,允许子结构体在不违反借用检查的情况下与父结构体进行通信和交互。

1个稳定版本

1.0.0 2023年12月28日

#23#circular

GPL-3.0 许可证

17KB

message_to_parent

一个简单的库,允许子结构体在不违反借用检查的情况下与父结构体进行通信和交互。

这是消息传递和冗长返回的超级活跃替代方案。

请参阅/examples/ 文件夹,了解如何使用此库的教程!

一个小例子,来自基本教程

extern crate message_to_parent;

use message_to_parent::MessageToParent;

struct Parent {
  thing_was_done: bool,
  child: Child,
}

impl Parent {
  pub fn new() -> Self {
    Parent {
      thing_was_done: false,
      child: Child::new(),
    }
  }

  pub fn main(&mut self) {
    println!("Parent: Thing was done? {}", self.thing_was_done);

    let mut child_message = self.child.do_thing();

    child_message.run_side_effects(self);

    println!("Parent: Thing was done? {}", self.thing_was_done);
  }
}

struct Child {}

impl Child {
  pub fn new() -> Self {
    Child {}
  }

  pub fn do_thing(&self) -> MessageToParent<Parent, ()> {
    let mut message = MessageToParent::<Parent, ()>::new();

    println!("Child: Doing thing!");

    message.add_side_effect(|parent| parent.thing_was_done = true);

    message
  }
}

///
/// This is literally the most basic example I could come up with.
///
fn main() {
  Parent::new().main();
}

无运行时依赖