add doc comment for mk_payload

This commit is contained in:
Joe Ardent 2025-09-17 13:06:12 -07:00
parent c7f3c21fd0
commit 6195807355
2 changed files with 3 additions and 36 deletions

View file

@ -1,10 +1,10 @@
[package] [package]
name = "nebkor-maelstrom" name = "nebkor-maelstrom"
edition = "2024" edition = "2024"
version = "1.1.0" version = "1.1.1"
license-file = "LICENSE.md" license-file = "LICENSE.md"
readme = "README.md" readme = "README.md"
description = "An easy-to-use and synchronous client for creating Maelstrom distributed clients." description = "An easy-to-use and synchronous framework for creating Maelstrom distributed clients."
repository = "https://git.kittencollective.com/nebkor/nebkor-maelstrom" repository = "https://git.kittencollective.com/nebkor/nebkor-maelstrom"
keywords = ["maelstrom", "glomers", "gossip", "distributed"] keywords = ["maelstrom", "glomers", "gossip", "distributed"]

View file

@ -1,5 +1,5 @@
use std::{ use std::{
collections::{BTreeMap, HashMap}, collections::HashMap,
io::{BufRead, Write}, io::{BufRead, Write},
sync::{ sync::{
Arc, Mutex, OnceLock, Arc, Mutex, OnceLock,
@ -20,7 +20,6 @@ pub type NodeyNodeFace = Arc<Mutex<dyn Node>>;
pub type OnInit = Box<dyn Fn(&Runner)>; pub type OnInit = Box<dyn Fn(&Runner)>;
pub type RpcFuture = Receiver<Message>; pub type RpcFuture = Receiver<Message>;
pub type RpcResult = std::result::Result<Option<Value>, ErrorCode>; pub type RpcResult = std::result::Result<Option<Value>, ErrorCode>;
pub type Topology = BTreeMap<String, Vec<String>>;
pub trait Node { pub trait Node {
fn handle(&mut self, runner: &Runner, msg: Message); fn handle(&mut self, runner: &Runner, msg: Message);
@ -233,35 +232,3 @@ pub fn mk_payload(payload: &[(&str, Value)]) -> Payload {
.map(|p| (p.0.to_string(), p.1.clone())) .map(|p| (p.0.to_string(), p.1.clone()))
.collect() .collect()
} }
/// Convenience function for turning a `topology` message into a map of node ->
/// neighbors (String -> Vec<String>).
pub fn parse_toplogy(msg: &Message) -> Option<Topology> {
if msg.typ() != "topology" {
return None;
}
let topology = msg
.body
.payload
.get("topology")
.unwrap()
.as_object()
.cloned()
.unwrap();
Some(
topology
.into_iter()
.map(|(node, neighbors)| {
(
node,
neighbors
.as_array()
.unwrap()
.iter()
.map(|neighbor| neighbor.as_str().unwrap().to_string())
.collect(),
)
})
.collect(),
)
}