diff --git a/src/flutclient.rs b/src/flutclient.rs index 4a97511..28a7a4f 100644 --- a/src/flutclient.rs +++ b/src/flutclient.rs @@ -19,7 +19,7 @@ macro_rules! build_parser_type_enum { #[derive(Clone)] pub enum ParserTypes { $( - #[cfg(feature = $feat)] + #[cfg(feature = $feat)] $name($t), )* } @@ -28,18 +28,29 @@ macro_rules! build_parser_type_enum { // add code here fn default() -> Self { $( - #[allow(unreachable_code)] #[cfg(feature = $feat)] + #[allow(unreachable_code)] return ParserTypes::$name(<$t>::default()); )* } } + impl ParserTypes { + pub fn announce() { + $( + #[cfg(feature = $feat)] + println!("Enabling {}", $feat); + #[cfg(not(feature = $feat))] + println!("Keeping {} disabled", $feat); + )* + } + } + macro_rules! match_parser { ($pident:ident: $parser:expr => $f:expr) => ( match &mut $parser { $( - #[cfg(feature = $feat)] + #[cfg(feature = $feat)] ParserTypes::$name($pident) => $f, )* } @@ -120,14 +131,20 @@ where fn change_protocol(&mut self, protocol: &Protocol) { match protocol { - #[cfg(feature="text")] + #[cfg(feature = "text")] Protocol::Text => self.parser = ParserTypes::TextParser(TextParser::default()), - #[cfg(not(feature="text"))] - Protocol::Text => {self.writer.write(b"feature \"text\" is not enabled."); self.writer.flush();} + #[cfg(not(feature = "text"))] + Protocol::Text => { + self.writer.write(b"feature \"text\" is not enabled."); + self.writer.flush(); + } #[cfg(feature = "binary")] Protocol::Binary => self.parser = ParserTypes::BinaryParser(BinaryParser::default()), #[cfg(not(feature = "binary"))] - Protocol::Binary => {self.writer.write(b"feature \"binary\" is not enabled."); self.writer.flush();} + Protocol::Binary => { + self.writer.write(b"feature \"binary\" is not enabled."); + self.writer.flush(); + } } } diff --git a/src/main.rs b/src/main.rs index 1d01da4..3581e50 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,7 +10,7 @@ use std::{ use chrono::Local; use flurry::{ config::{GRID_LENGTH, HOST, IMAGE_SAVE_INTERVAL, JPEG_UPDATE_INTERVAL}, - flutclient::{FlutClient, }, + flutclient::{FlutClient, ParserTypes}, grid::{self, Flut}, webapi::WebApiContext, AsyncResult, COUNTER, @@ -102,10 +102,7 @@ async fn main() { let grids: Arc<[Flut; GRID_LENGTH]> = [grid::Flut::init(800, 600, 0xff_00_ff_ff)].into(); tracing::trace!("created grids"); - #[cfg(feature = "text")] - println!("Enabling text"); - #[cfg(feature = "binary")] - println!("Enabling binary"); + ParserTypes::announce(); let Ok(flut_listener) = TcpListener::bind(HOST).await else { tracing::error!(