From 11259ede2e2d5f6fe8c3d7d3917b50fbce9b716e Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 30 May 2022 09:12:54 +0200 Subject: [PATCH] Fix warning: Use `writeln!` instead of `push_str(&format!(...))` Avoids an extra allocation. --- common/src/descriptor/visualize.rs | 31 +++++++++++++++--------------- coordinator/src/main.rs | 7 +++++-- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/common/src/descriptor/visualize.rs b/common/src/descriptor/visualize.rs index 668960dd..0603dd24 100644 --- a/common/src/descriptor/visualize.rs +++ b/common/src/descriptor/visualize.rs @@ -1,7 +1,9 @@ -use dora_node_api::config::{DataId, InputMapping, NodeId}; - use super::{CustomNode, Node, NodeKind, OperatorConfig, RuntimeNode}; -use std::collections::{BTreeMap, HashMap}; +use dora_node_api::config::{DataId, InputMapping, NodeId}; +use std::{ + collections::{BTreeMap, HashMap}, + fmt::Write as _, +}; pub fn visualize_nodes(nodes: &[Node]) -> String { let mut flowchart = "flowchart TB\n".to_owned(); @@ -32,29 +34,29 @@ fn visualize_node(node: &Node, flowchart: &mut String) { fn visualize_custom_node(node_id: &NodeId, node: &CustomNode, flowchart: &mut String) { if node.run_config.inputs.is_empty() { // source node - flowchart.push_str(&format!(" {node_id}[\\{node_id}/]\n")); + writeln!(flowchart, " {node_id}[\\{node_id}/]").unwrap(); } else if node.run_config.outputs.is_empty() { // sink node - flowchart.push_str(&format!(" {node_id}[/{node_id}\\]\n")); + writeln!(flowchart, " {node_id}[/{node_id}\\]").unwrap(); } else { // normal node - flowchart.push_str(&format!(" {node_id}\n")); + writeln!(flowchart, " {node_id}").unwrap(); } } fn visualize_runtime_node(node_id: &NodeId, operators: &[OperatorConfig], flowchart: &mut String) { - flowchart.push_str(&format!("subgraph {node_id}\n")); + writeln!(flowchart, "subgraph {node_id}").unwrap(); for operator in operators { let operator_id = &operator.id; if operator.inputs.is_empty() { // source operator - flowchart.push_str(&format!(" {node_id}/{operator_id}[\\{operator_id}/]\n")); + writeln!(flowchart, " {node_id}/{operator_id}[\\{operator_id}/]").unwrap(); } else if operator.outputs.is_empty() { // sink operator - flowchart.push_str(&format!(" {node_id}/{operator_id}[/{operator_id}\\]\n")); + writeln!(flowchart, " {node_id}/{operator_id}[/{operator_id}\\]").unwrap(); } else { // normal operator - flowchart.push_str(&format!(" {node_id}/{operator_id}[{operator_id}]\n")); + writeln!(flowchart, " {node_id}/{operator_id}[{operator_id}]").unwrap(); } } @@ -106,7 +108,7 @@ fn visualize_inputs( } else { format!("{output} as {input_id}") }; - flowchart.push_str(&format!(" {source} -- {data} --> {target}\n")); + writeln!(flowchart, " {source} -- {data} --> {target}").unwrap(); source_found = true; } } @@ -118,9 +120,8 @@ fn visualize_inputs( } else { format!("{output} as {input_id}") }; - flowchart.push_str(&format!( - " {source}/{operator_id} -- {data} --> {target}\n" - )); + writeln!(flowchart, " {source}/{operator_id} -- {data} --> {target}") + .unwrap(); source_found = true; } } @@ -130,7 +131,7 @@ fn visualize_inputs( } if !source_found { - flowchart.push_str(&format!(" missing>missing] -- {input_id} --> {target}\n")); + writeln!(flowchart, " missing>missing] -- {input_id} --> {target}").unwrap(); } } } diff --git a/coordinator/src/main.rs b/coordinator/src/main.rs index 251b646b..0f8e0ff5 100644 --- a/coordinator/src/main.rs +++ b/coordinator/src/main.rs @@ -2,7 +2,10 @@ use dora_common::descriptor::{self, Descriptor}; use dora_node_api::config::NodeId; use eyre::{bail, eyre, WrapErr}; use futures::{stream::FuturesUnordered, StreamExt}; -use std::path::{Path, PathBuf}; +use std::{ + fmt::Write as _, + path::{Path, PathBuf}, +}; #[derive(Debug, Clone, clap::Parser)] #[clap(about = "Dora coordinator")] @@ -60,7 +63,7 @@ async fn run_dataflow(dataflow_path: PathBuf, runtime: &Path) -> eyre::Result<() } // add uuid as prefix to ensure isolation - communication.zenoh_prefix += &format!("/{}", uuid::Uuid::new_v4()); + write!(communication.zenoh_prefix, "/{}", uuid::Uuid::new_v4()).unwrap(); let mut tasks = FuturesUnordered::new(); for node in nodes {