pub struct Message { /* private fields */ }Expand description
Represents a message that can be sent between scripts or from the engine.
§Example
#[derive(Serialize, Deserialize)]
struct TestMessage {
value: i32,
}
impl MessageType for TestMessage {
fn id() -> &'static str {
"test_message"
}
}
fn handle(message: &Message) {
message.handle::<TestMessage>(|m| {
log::info!("Received message: {}", m.value);
Ok(())
}).expect("message handle failed");
}Implementations§
Source§impl Message
impl Message
Sourcepub fn new<T: MessageType>(value: T) -> Self
pub fn new<T: MessageType>(value: T) -> Self
Creates a new message with the given value.
Sourcepub fn value<T: MessageType>(&self) -> Result<T, MessageValueError>
pub fn value<T: MessageType>(&self) -> Result<T, MessageValueError>
Returns the message value as the given type. Returns a MessageValueError if the message has a different type.
Sourcepub fn has_type<T: MessageType>(&self) -> bool
pub fn has_type<T: MessageType>(&self) -> bool
Returns true if the message has the given type.
Sourcepub fn handle<T: MessageType>(
&self,
f: impl FnOnce(T) -> Result<(), Box<dyn Error>>,
) -> Result<bool, MessageHandleError>
pub fn handle<T: MessageType>( &self, f: impl FnOnce(T) -> Result<(), Box<dyn Error>>, ) -> Result<bool, MessageHandleError>
Handle the message with the given handler function.
Returns Ok(true) if the message was handled, Ok(false) if the message has a different type,
or Err if the message could not be deserialized or the handler function returned an error.
The handler function should return Ok(()) if the message was handled successfully.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Message
impl<'de> Deserialize<'de> for Message
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Message
impl RefUnwindSafe for Message
impl Send for Message
impl Sync for Message
impl Unpin for Message
impl UnwindSafe for Message
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more