🏗️ Elegant & Highly Performant Async Gemini Server Framework for the Modern Age
async framework gemini-protocol protocol gemini rust

refactor: Update Makefile.toml and source to follow new toolchain checks and lints

fuwn.net 2e1e8fd0 b3b6691b

verified
+32 -17
+17 -6
Makefile.toml
··· 7 7 toolchain = "nightly" 8 8 9 9 [tasks.check] 10 - args = ["check", "--no-default-features", "--features", "logger,auto-deduce-mime,response-macros,${@}"] 10 + args = [ 11 + "check", 12 + "--no-default-features", 13 + "--features=logger,auto-deduce-mime,response-macros,${@}", 14 + ] 11 15 command = "cargo" 12 16 toolchain = "nightly" 13 17 14 18 [tasks.clippy] 15 - args = ["clippy", "--no-default-features", "--features", "logger,auto-deduce-mime,response-macros,${@}"] 19 + args = [ 20 + "clippy", 21 + "--no-default-features", 22 + "--features=logger,auto-deduce-mime,response-macros,${@}", 23 + ] 16 24 command = "cargo" 17 25 toolchain = "nightly" 18 26 19 27 [tasks.test] 20 - args = ["test", "--no-default-features", "--features", "logger,auto-deduce-mime,response-macros,${@}"] 28 + args = [ 29 + "test", 30 + "--no-default-features", 31 + "--features=logger,auto-deduce-mime,response-macros,${@}", 32 + ] 21 33 command = "cargo" 22 - toolchain = "1.68.2" 23 34 24 35 [tasks.checkf] 25 36 script = ''' ··· 75 86 #!@duckscript 76 87 77 88 if is_empty ${2} 78 - exec cargo run --example ${1} --no-default-features --features logger,auto-deduce-mime,response-macros,tokio 89 + exec cargo run --example ${1} --no-default-features --features=logger,auto-deduce-mime,response-macros,tokio 79 90 else 80 - exec cargo run --example ${1} --no-default-features --features logger,auto-deduce-mime,response-macros,${2} 91 + exec cargo run --example ${1} --no-default-features --features=logger,auto-deduce-mime,response-macros,${2} 81 92 end 82 93 '''
+15 -11
src/router.rs
··· 19 19 20 20 use std::{ 21 21 error::Error, 22 + fmt::Write, 22 23 future::IntoFuture, 23 24 sync::{Arc, Mutex}, 24 25 time, ··· 342 343 let ssl = match ssl::Ssl::new(acceptor.context()) { 343 344 Ok(ssl) => ssl, 344 345 Err(e) => { 345 - error!("ssl context error: {:?}", e); 346 + error!("ssl context error: {e:?}"); 346 347 347 348 return; 348 349 } ··· 360 361 } 361 362 362 363 if let Err(e) = self_clone.handle(&mut stream).await { 363 - error!("handle error: {}", e); 364 + error!("handle error: {e}"); 364 365 } 365 366 } 366 - Err(e) => error!("ssl stream error: {:?}", e), 367 + Err(e) => error!("ssl stream error: {e:?}"), 367 368 } 368 369 }); 369 370 } 370 - Err(e) => error!("tcp stream error: {:?}", e), 371 + Err(e) => error!("tcp stream error: {e:?}"), 371 372 } 372 373 } 373 374 ··· 454 455 455 456 if let Ok(mut headers) = self.headers.lock() { 456 457 for partial_header in &mut *headers { 457 - header.push_str(&format!( 458 - "{}\n", 458 + writeln!( 459 + &mut header, 460 + "{}", 459 461 partial_header.call(route_context.clone()), 460 - )); 462 + ) 463 + .unwrap(); 461 464 } 462 465 } 463 466 ··· 465 468 #[allow(clippy::needless_borrow, clippy::explicit_auto_deref)] 466 469 (&mut *self.footers.lock().unwrap()).iter_mut().enumerate() 467 470 } { 468 - footer.push_str(&format!( 471 + let _ = write!( 472 + &mut footer, 469 473 "{}{}", 470 474 partial_footer.call(route_context.clone()), 471 475 if footers_length > 1 && i != footers_length - 1 { ··· 473 477 } else { 474 478 "" 475 479 }, 476 - )); 480 + ); 477 481 } 478 482 479 483 let mut lock = (*route.value).lock().await; ··· 952 956 /// ```rust 953 957 /// windmark::router::Router::new().set_port(1965); 954 958 /// ``` 955 - pub fn set_port(&mut self, port: i32) -> &mut Self { 959 + pub const fn set_port(&mut self, port: i32) -> &mut Self { 956 960 self.port = port; 957 961 958 962 self ··· 966 970 /// ```rust 967 971 /// windmark::router::Router::new().set_fix_path(true); 968 972 /// ``` 969 - pub fn set_fix_path(&mut self, fix_path: bool) -> &mut Self { 973 + pub const fn set_fix_path(&mut self, fix_path: bool) -> &mut Self { 970 974 self.fix_path = fix_path; 971 975 972 976 self