From 448a11d47437f81ad297d11da2ea46898a4968f8 Mon Sep 17 00:00:00 2001 From: Daniel Flanagan Date: Fri, 27 Oct 2023 13:03:48 -0500 Subject: [PATCH] Make Clippy super pedantic, add logging/tracing lib --- Cargo.lock | 195 ++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 + flake.lock | 17 ++++ flake.nix | 38 ++++++--- rust-toolchain.toml | 3 + src/main.rs | 49 +++++------ 6 files changed, 266 insertions(+), 38 deletions(-) create mode 100644 rust-toolchain.toml diff --git a/Cargo.lock b/Cargo.lock index da15124..7688c33 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,201 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + [[package]] name = "lriamol" version = "0.1.0" +dependencies = [ + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "proc-macro2" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + +[[package]] +name = "syn" +version = "2.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml index cb6fa8a..77e2820 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,3 +6,5 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +tracing = "0.1.40" +tracing-subscriber = "0.3.17" diff --git a/flake.lock b/flake.lock index 8efbabe..c2790c8 100644 --- a/flake.lock +++ b/flake.lock @@ -37,10 +37,27 @@ "type": "github" } }, + "nixpkgs-mozilla": { + "flake": false, + "locked": { + "lastModified": 1695805681, + "narHash": "sha256-1ElPLD8eFfnuIk0G52HGGpRtQZ4QPCjChRlEOfkZ5ro=", + "owner": "mozilla", + "repo": "nixpkgs-mozilla", + "rev": "6eabade97bc28d707a8b9d82ad13ef143836736e", + "type": "github" + }, + "original": { + "owner": "mozilla", + "repo": "nixpkgs-mozilla", + "type": "github" + } + }, "root": { "inputs": { "naersk": "naersk", "nixpkgs": "nixpkgs", + "nixpkgs-mozilla": "nixpkgs-mozilla", "utils": "utils" } }, diff --git a/flake.nix b/flake.nix index 4faf3e9..0e0d083 100644 --- a/flake.nix +++ b/flake.nix @@ -7,20 +7,43 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + nixpkgs-mozilla = { + url = "github:mozilla/nixpkgs-mozilla"; + flake = false; + }; + utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, + nixpkgs-mozilla, utils, naersk, }: utils.lib.eachDefaultSystem (system: let - pkgs = import nixpkgs {inherit system;}; - naersk-lib = pkgs.callPackage naersk {}; + pkgs = (import nixpkgs) { + inherit system; + + overlays = [ + (import nixpkgs-mozilla) + ]; + }; + + toolchain = + (pkgs.rustChannelOf { + rustToolchain = ./rust-toolchain.toml; + sha256 = "sha256-rLP8+fTxnPHoR96ZJiCa/5Ans1OojI7MLsmSqR2ip8o="; + }) + .rust; + + naersk' = pkgs.callPackage naersk { + cargo = toolchain; + rustc = toolchain; + }; in { - packages.default = naersk-lib.buildPackage ./.; + packages.default = naersk'.buildPackage ./.; formatter = nixpkgs.legacyPackages.${system}.alejandra; checks = { inherit (self.packages.${system}) default; @@ -28,14 +51,7 @@ }; devShell = with pkgs; mkShell { - buildInputs = [ - cargo - rustc - rustfmt - pre-commit - rustPackages.clippy - rust-analyzer - ]; + buildInputs = [toolchain]; RUST_SRC_PATH = rustPlatform.rustLibSrc; }; }); diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..483bfad --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.73.0" +components = ["rustfmt", "clippy", "rust-analysis", "cargo", "rust-analyzer"] diff --git a/src/main.rs b/src/main.rs index 45ba317..7855f4d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,43 +1,38 @@ -#![warn( - clippy::all, +#![deny(clippy::all)] +#![allow(clippy::blanket_clippy_restriction_lints)] +#![forbid( clippy::style, - clippy::absolute_paths, clippy::pedantic, clippy::nursery, + clippy::restriction, // clippy::cargo )] //! my code and notes from the book "Learn Rust in a Month of Lunches" +use tracing::info; +use tracing_subscriber::fmt::init as init_trace_logger; + /// a doc comment - use `cargo doc --open` to see it? fn main() { - // ch 1 - let c: char = '\u{D1EA}'; - println!("Hello, world! {c}"); + init_trace_logger(); - // ch 2 - let bytes = b"yoyoyo"; - println!("Hello, bytes! {bytes:?}"); + { + // ch 1 + let my_char = '\u{D1EA}'; + info!("Hello, world! {my_char}"); + }; - let me = "meeeeeeeeeeeeeeeeeeeeeeeeeee"; - println!("Hello, {me: <4.12}, meet the real {me}."); + { + // ch 2 + let bytes = b"yoyoyo"; + info!("Hello, bytes! {bytes:?}"); + }; - // ch 3 - let children = 5; - let married = true; - - // match guards - match (children, married) { - (children, married) if !married => { - println!("Not married with {children} kids"); - } - (children, married) if children == 0 && married => { - println!("Married but no children"); - } - _ => { - println!("Married? {married}. Number of children: {children}."); - } - } + { + let me = "meeeeeeeeeeeeeeeeeeeeeeeeeee"; + info!("Hello, {me: <4.12}, meet the real {me}."); + }; } // if I were to write a webapp, I would like to avoid postgres