diff --git a/lib/protoflow-blocks/src/blocks/core.rs b/lib/protoflow-blocks/src/blocks/core.rs index 15557ba0..f6f4e760 100644 --- a/lib/protoflow-blocks/src/blocks/core.rs +++ b/lib/protoflow-blocks/src/blocks/core.rs @@ -2,7 +2,7 @@ pub mod core { use super::{ - prelude::{vec, Box, Cow, Named, Vec}, + prelude::{vec, Box, Bytes, Cow, Named, Vec}, BlockConnections, BlockInstantiation, InputPortName, OutputPortName, System, }; use crate::{ @@ -14,6 +14,8 @@ pub mod core { pub trait CoreBlocks { fn buffer + 'static>(&mut self) -> Buffer; + fn const_bytes>(&mut self, value: T) -> Const; + fn const_string(&mut self, value: impl ToString) -> Const; fn count(&mut self) -> Count; diff --git a/lib/protoflow-blocks/src/system.rs b/lib/protoflow-blocks/src/system.rs index 695ccfba..2c7d648c 100644 --- a/lib/protoflow-blocks/src/system.rs +++ b/lib/protoflow-blocks/src/system.rs @@ -3,7 +3,7 @@ #![allow(dead_code)] use crate::{ - prelude::{fmt, Arc, Box, FromStr, Rc, String, ToString}, + prelude::{fmt, Arc, Box, Bytes, FromStr, Rc, String, ToString}, types::{DelayType, Encoding}, AllBlocks, Buffer, ConcatStrings, Const, CoreBlocks, Count, Decode, DecodeCsv, DecodeHex, DecodeJson, Delay, Drop, Encode, EncodeCsv, EncodeHex, EncodeJson, FlowBlocks, HashBlocks, @@ -133,6 +133,11 @@ impl CoreBlocks for System { self.0.block(Buffer::::with_system(self)) } + fn const_bytes>(&mut self, value: T) -> Const { + self.0 + .block(Const::::with_system(self, value.into())) + } + fn const_string(&mut self, value: impl ToString) -> Const { self.0 .block(Const::::with_system(self, value.to_string())) @@ -308,3 +313,19 @@ impl TextBlocks for System { .block(SplitString::with_system(self, Some(delimiter.to_string()))) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn const_bytes_accepts_various_types() { + let _ = System::build(|s| { + let _ = s.const_bytes("Hello world"); + let _ = s.const_bytes("Hello world".to_string()); + let _ = s.const_bytes(&b"Hello world"[..]); + let _ = s.const_bytes(b"Hello world".to_vec()); + let _ = s.const_bytes(Bytes::from("Hello world")); + }); + } +}