pub struct Posted {
pub thread: ThreadName,
pub message: Message,
pub woken: BTreeSet<Who>,
pub key: Option<String>,
}Expand description
A message in a thread.
Fields§
§thread: ThreadName§message: MessageThe message, with its seq. A signed message keeps its payload and its signature unchanged.
woken: BTreeSet<Who>Each session that the message woke.
key: Option<String>The key of the post (wire::Post::key): the next post with the same
key from the same user is dropped (01M5TKG2K1AYK1KE7C2AA2W9DS).
Implementations§
Source§impl Posted
impl Posted
Sourcepub fn mark(body: &str) -> &'static str
pub fn mark(body: &str) -> &'static str
The mark of body: the first of MARKS that starts it, before
a colon. An empty text when no mark starts it.
use riff_core::record::Posted;
assert_eq!(Posted::mark("request: claim issue-12"), "request");
assert_eq!(Posted::mark("verify request: issue-12, PR #40"), "verify request");
assert_eq!(Posted::mark("verify result: PASS for issue-12"), "verify result");
assert_eq!(Posted::mark("Lead: request: claim issue-12"), "");
assert_eq!(Posted::mark("requests are free"), "");Sourcepub fn for_audit(self) -> Posted
pub fn for_audit(self) -> Posted
The post for an audit (01M3ZWRC3XBFN8FJDGE8XWZ5EA): its body is
only its mark, and it has no signature and no
payload. The kind, the sender, the to and the time stay.
use riff_core::record::Posted;
use riff_core::wire::Message;
let posted = Posted {
thread: "acme/app".parse()?,
message: Message {
seq: 4,
from: "riff://ann@heron/acme/app?session=s1".parse()?,
to: Vec::new(),
body: "request: claim issue-12. The token is t0p.".into(),
at_ms: 9,
kind: Default::default(),
sig: Some("sig".into()),
payload: Some("payload".into()),
},
woken: Default::default(),
key: None,
};
let audit = posted.clone().for_audit();
assert_eq!(audit.message.body, "request");
assert_eq!((audit.message.sig, audit.message.payload), (None, None));
assert_eq!((audit.message.seq, audit.message.at_ms), (4, 9));Trait Implementations§
Source§impl<'de> Deserialize<'de> for Posted
impl<'de> Deserialize<'de> for Posted
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
Source§impl JsonSchema for Posted
impl JsonSchema for Posted
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
Whether JSON Schemas generated for this type should be included directly in parent schemas,
rather than being re-used where possible using the
$ref keyword. Read moreimpl Eq for Posted
impl StructuralPartialEq for Posted
Auto Trait Implementations§
impl Freeze for Posted
impl RefUnwindSafe for Posted
impl Send for Posted
impl Sync for Posted
impl Unpin for Posted
impl UnsafeUnpin for Posted
impl UnwindSafe for Posted
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.