Skip to content

Commit af91590

Browse files
committed
Add support for the skip attr on msg!
1 parent d0897a6 commit af91590

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

rust/bufferfish/src/lib.rs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,25 @@ pub use bufferfish_derive::{Decode, Encode};
77
#[cfg(feature = "derive")]
88
pub use compiler::generate;
99

10-
/// Helper macro for defining packets with reduced boilerplate.
10+
/// Helper macro for defining messages with reduced boilerplate.
1111
///
1212
/// # Examples
1313
///
1414
/// ```rust
15-
/// # use bufferfish::packet;
15+
/// # use bufferfish::msg;
1616
/// # enum ClientEventId { HeartbeatAck, ChatMessage }
17-
/// // Empty packet
18-
/// packet!(HeartbeatAckPacket, ClientEventId::HeartbeatAck);
17+
/// // Empty message
18+
/// msg!(HeartbeatAckMessage, ClientEventId::HeartbeatAck);
1919
///
20-
/// // Packet with fields
21-
/// packet!(SendChatMessagePacket, ClientEventId::ChatMessage, {
20+
/// // Message with fields
21+
/// msg!(SendChatMessage, ClientEventId::ChatMessage, {
2222
/// pub content: String,
2323
/// });
24+
///
25+
/// // Message with skip attribute for client-side generation
26+
/// msg!(ServerOnlyMessage, ClientEventId::ServerData, skip = "client", {
27+
/// pub secret: String,
28+
/// });
2429
/// ```
2530
#[cfg(feature = "derive")]
2631
#[macro_export]
@@ -32,6 +37,13 @@ macro_rules! msg {
3237
pub struct $name;
3338
};
3439

40+
// Empty message with skip attribute
41+
($name:ident, $id:expr, skip = $target:expr) => {
42+
#[derive(Debug, Encode)]
43+
#[bufferfish($id, skip = $target)]
44+
pub struct $name;
45+
};
46+
3547
// Message with fields
3648
($name:ident, $id:expr, { $($field:vis $field_name:ident: $field_type:ty),* $(,)? }) => {
3749
#[derive(Debug, Encode)]
@@ -40,6 +52,15 @@ macro_rules! msg {
4052
$($field $field_name: $field_type,)*
4153
}
4254
};
55+
56+
// Message with fields and skip attribute
57+
($name:ident, $id:expr, skip = $target:expr, { $($field:vis $field_name:ident: $field_type:ty),* $(,)? }) => {
58+
#[derive(Debug, Encode)]
59+
#[bufferfish($id, skip = $target)]
60+
pub struct $name {
61+
$($field $field_name: $field_type,)*
62+
}
63+
};
4364
}
4465

4566
#[cfg(feature = "derive")]

0 commit comments

Comments
 (0)