create super strict rust config
This commit is contained in:
commit
d56ebb7e16
36 changed files with 2969 additions and 0 deletions
19
.direnv/bin/nix-direnv-reload
Executable file
19
.direnv/bin/nix-direnv-reload
Executable file
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
if [[ ! -d "/home/nionidh/projects/rust-tomfoolery/cursor-mover-app" ]]; then
|
||||||
|
echo "Cannot find source directory; Did you move it?"
|
||||||
|
echo "(Looking for "/home/nionidh/projects/rust-tomfoolery/cursor-mover-app")"
|
||||||
|
echo 'Cannot force reload with this script - use "direnv reload" manually and then try again'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# rebuild the cache forcefully
|
||||||
|
_nix_direnv_force_reload=1 direnv exec "/home/nionidh/projects/rust-tomfoolery/cursor-mover-app" true
|
||||||
|
|
||||||
|
# Update the mtime for .envrc.
|
||||||
|
# This will cause direnv to reload again - but without re-building.
|
||||||
|
touch "/home/nionidh/projects/rust-tomfoolery/cursor-mover-app/.envrc"
|
||||||
|
|
||||||
|
# Also update the timestamp of whatever profile_rc we have.
|
||||||
|
# This makes sure that we know we are up to date.
|
||||||
|
touch -r "/home/nionidh/projects/rust-tomfoolery/cursor-mover-app/.envrc" "/home/nionidh/projects/rust-tomfoolery/cursor-mover-app/.direnv"/*.rc
|
||||||
1
.direnv/flake-inputs/12rd2bk68yfdn66pzcnwkgcyxf28y2fq-source
Symbolic link
1
.direnv/flake-inputs/12rd2bk68yfdn66pzcnwkgcyxf28y2fq-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/12rd2bk68yfdn66pzcnwkgcyxf28y2fq-source
|
||||||
1
.direnv/flake-inputs/41f1cpnv29cwhhf9y41a1q0757v8phl3-source
Symbolic link
1
.direnv/flake-inputs/41f1cpnv29cwhhf9y41a1q0757v8phl3-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/41f1cpnv29cwhhf9y41a1q0757v8phl3-source
|
||||||
1
.direnv/flake-inputs/5wsbaidxzywizpm8ywrkl14qy125d566-source
Symbolic link
1
.direnv/flake-inputs/5wsbaidxzywizpm8ywrkl14qy125d566-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/5wsbaidxzywizpm8ywrkl14qy125d566-source
|
||||||
1
.direnv/flake-inputs/anbs72p9zzvyk3a227k0zmas73l56gxl-source
Symbolic link
1
.direnv/flake-inputs/anbs72p9zzvyk3a227k0zmas73l56gxl-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/anbs72p9zzvyk3a227k0zmas73l56gxl-source
|
||||||
1
.direnv/flake-inputs/bmvmvrckk4vz1kmr9prig8prmc09c9yq-source
Symbolic link
1
.direnv/flake-inputs/bmvmvrckk4vz1kmr9prig8prmc09c9yq-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/bmvmvrckk4vz1kmr9prig8prmc09c9yq-source
|
||||||
1
.direnv/flake-inputs/bnswhsxlbaf17xfsacm6xbj23g7g9j5b-source
Symbolic link
1
.direnv/flake-inputs/bnswhsxlbaf17xfsacm6xbj23g7g9j5b-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/bnswhsxlbaf17xfsacm6xbj23g7g9j5b-source
|
||||||
1
.direnv/flake-inputs/dj66bmh6cjl4pbw0aw50iiz631xdc4z9-source
Symbolic link
1
.direnv/flake-inputs/dj66bmh6cjl4pbw0aw50iiz631xdc4z9-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/dj66bmh6cjl4pbw0aw50iiz631xdc4z9-source
|
||||||
1
.direnv/flake-inputs/dq57cg11cdy3rg7jwxh25c02jdi7mzq8-source
Symbolic link
1
.direnv/flake-inputs/dq57cg11cdy3rg7jwxh25c02jdi7mzq8-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/dq57cg11cdy3rg7jwxh25c02jdi7mzq8-source
|
||||||
1
.direnv/flake-inputs/drfbazv2fh6qnlvk2imjkhbqs75r69pj-source
Symbolic link
1
.direnv/flake-inputs/drfbazv2fh6qnlvk2imjkhbqs75r69pj-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/drfbazv2fh6qnlvk2imjkhbqs75r69pj-source
|
||||||
1
.direnv/flake-inputs/fhapivckp1hrf0cn2bsr8cv5f98c2skb-source
Symbolic link
1
.direnv/flake-inputs/fhapivckp1hrf0cn2bsr8cv5f98c2skb-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/fhapivckp1hrf0cn2bsr8cv5f98c2skb-source
|
||||||
1
.direnv/flake-inputs/g5v3sgqy6a0fsmas7mnapc196flrplix-source
Symbolic link
1
.direnv/flake-inputs/g5v3sgqy6a0fsmas7mnapc196flrplix-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/g5v3sgqy6a0fsmas7mnapc196flrplix-source
|
||||||
1
.direnv/flake-inputs/gs1d4570bffhpg2704yb26p49fzgg343-source
Symbolic link
1
.direnv/flake-inputs/gs1d4570bffhpg2704yb26p49fzgg343-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/gs1d4570bffhpg2704yb26p49fzgg343-source
|
||||||
1
.direnv/flake-inputs/j1r5yym7jdsgyb40ykfwwrd7wyf2z2k7-source
Symbolic link
1
.direnv/flake-inputs/j1r5yym7jdsgyb40ykfwwrd7wyf2z2k7-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/j1r5yym7jdsgyb40ykfwwrd7wyf2z2k7-source
|
||||||
1
.direnv/flake-inputs/j5qcw5x2dm0jlffwwymp6yav62l3pdqm-source
Symbolic link
1
.direnv/flake-inputs/j5qcw5x2dm0jlffwwymp6yav62l3pdqm-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/j5qcw5x2dm0jlffwwymp6yav62l3pdqm-source
|
||||||
1
.direnv/flake-inputs/m0m72b7nj91pfyfbblzhi7k7c2cxpb6b-source
Symbolic link
1
.direnv/flake-inputs/m0m72b7nj91pfyfbblzhi7k7c2cxpb6b-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/m0m72b7nj91pfyfbblzhi7k7c2cxpb6b-source
|
||||||
1
.direnv/flake-inputs/p4l9q189cgldga9f1051fhfllfzmk4c5-source
Symbolic link
1
.direnv/flake-inputs/p4l9q189cgldga9f1051fhfllfzmk4c5-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/p4l9q189cgldga9f1051fhfllfzmk4c5-source
|
||||||
1
.direnv/flake-inputs/sy3ism981f9xcbcmdc7gbk0yz28w6yjz-source
Symbolic link
1
.direnv/flake-inputs/sy3ism981f9xcbcmdc7gbk0yz28w6yjz-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/sy3ism981f9xcbcmdc7gbk0yz28w6yjz-source
|
||||||
1
.direnv/flake-inputs/vwwbg9chin0hq0snddfn0swzdi7frgia-source
Symbolic link
1
.direnv/flake-inputs/vwwbg9chin0hq0snddfn0swzdi7frgia-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/vwwbg9chin0hq0snddfn0swzdi7frgia-source
|
||||||
1
.direnv/flake-inputs/w0x3nihmdb6cwdqh0i0h4fs95alvv770-source
Symbolic link
1
.direnv/flake-inputs/w0x3nihmdb6cwdqh0i0h4fs95alvv770-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/w0x3nihmdb6cwdqh0i0h4fs95alvv770-source
|
||||||
1
.direnv/flake-inputs/x8ymj8dbvyzhj0vpgga2plzdgmar3bb0-source
Symbolic link
1
.direnv/flake-inputs/x8ymj8dbvyzhj0vpgga2plzdgmar3bb0-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/x8ymj8dbvyzhj0vpgga2plzdgmar3bb0-source
|
||||||
1
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
Symbolic link
1
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/m0ljcg0awk034sx2b8wf09ray36dgcqm-my-project-env
|
||||||
2223
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
Normal file
2223
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
Normal file
File diff suppressed because it is too large
Load diff
17
.envrc
Normal file
17
.envrc
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if ! has nix_direnv_version || ! nix_direnv_version 3.1.0; then
|
||||||
|
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.1.0/direnvrc" "sha256-yMJ2OVMzrFaDPn7q8nCBZFRYpL/f0RcHzhmw/i6btJM="
|
||||||
|
fi
|
||||||
|
|
||||||
|
export DEVENV_IN_DIRENV_SHELL=true
|
||||||
|
|
||||||
|
watch_file flake.nix
|
||||||
|
watch_file flake.lock
|
||||||
|
|
||||||
|
mkdir -p "$PWD/.devenv"
|
||||||
|
DEVENV_ROOT_FILE="$PWD/.devenv/root"
|
||||||
|
printf %s "$PWD" >"$DEVENV_ROOT_FILE"
|
||||||
|
if ! use flake . --override-input devenv-root "file+file://$DEVENV_ROOT_FILE"; then
|
||||||
|
echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2
|
||||||
|
fi
|
||||||
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
.devenv
|
||||||
|
.devenv
|
||||||
|
|
||||||
|
|
||||||
|
# Added by cargo
|
||||||
|
|
||||||
|
/target
|
||||||
59
Cargo.lock
generated
Normal file
59
Cargo.lock
generated
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "1.1.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.12.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-automata",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "the-app"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"regex",
|
||||||
|
"the-lib",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "the-lib"
|
||||||
|
version = "0.0.0"
|
||||||
21
Cargo.toml
Normal file
21
Cargo.toml
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
[workspace]
|
||||||
|
members = [
|
||||||
|
"crates/the-app",
|
||||||
|
"crates/the-lib",
|
||||||
|
]
|
||||||
|
resolver = "2"
|
||||||
|
|
||||||
|
[workspace.dependencies]
|
||||||
|
the-lib = {path="crates/the-lib", version="0.0.0"}
|
||||||
|
|
||||||
|
[workspace.lints.clippy]
|
||||||
|
all = "warn"
|
||||||
|
correctness = "deny"
|
||||||
|
suspicious = "warn"
|
||||||
|
complexity = "warn"
|
||||||
|
perf = "warn"
|
||||||
|
style = "warn"
|
||||||
|
pedantic = "warn"
|
||||||
|
restriction = "allow"
|
||||||
|
cargo = "warn"
|
||||||
|
nursery = "warn"
|
||||||
216
clippy.toml
Normal file
216
clippy.toml
Normal file
|
|
@ -0,0 +1,216 @@
|
||||||
|
# https://doc.rust-lang.org/stable/clippy/lint_configuration.html
|
||||||
|
absolute-paths-allowed-crates = []
|
||||||
|
absolute-paths-max-segments = 2
|
||||||
|
accept-comment-above-attributes = true
|
||||||
|
accept-comment-above-statement = true
|
||||||
|
allow-comparison-to-zero = false
|
||||||
|
allow-dbg-in-tests = false
|
||||||
|
# allow-exact-repetitions = true
|
||||||
|
allow-expect-in-consts = true
|
||||||
|
allow-expect-in-tests = false
|
||||||
|
allow-indexing-slicing-in-tests = false
|
||||||
|
allow-mixed-uninlined-format-args = false
|
||||||
|
allow-one-hash-in-raw-strings = false
|
||||||
|
allow-panic-in-tests = false
|
||||||
|
allow-print-in-tests = false
|
||||||
|
allow-private-module-inception = false
|
||||||
|
allow-renamed-params-for = [
|
||||||
|
"core::convert::From",
|
||||||
|
"core::convert::TryFrom",
|
||||||
|
"core::fmt::Display",
|
||||||
|
"core::fmt::Debug",
|
||||||
|
"core::str::FromStr",
|
||||||
|
]
|
||||||
|
allow-unwrap-in-consts = true
|
||||||
|
allow-unwrap-in-tests = true
|
||||||
|
allow-useless-vec-in-tests = false
|
||||||
|
allowed-dotfiles = []
|
||||||
|
allowed-duplicate-crates = []
|
||||||
|
allowed-idents-below-min-chars = []
|
||||||
|
allowed-prefixes = ["to", "as", "into", "from", "try_into", "try_from"]
|
||||||
|
allowed-scripts = ["Latin"]
|
||||||
|
allowed-wildcard-imports = []
|
||||||
|
arithmetic-side-effects-allowed = []
|
||||||
|
arithmetic-side-effects-allowed-binary = []
|
||||||
|
arithmetic-side-effects-allowed-unary = []
|
||||||
|
array-size-threshold = 16384
|
||||||
|
avoid-breaking-exported-api = false
|
||||||
|
await-holding-invalid-types = []
|
||||||
|
cargo-ignore-publish = false
|
||||||
|
check-incompatible-msrv-in-tests = false
|
||||||
|
check-inconsistent-struct-field-initializers = true
|
||||||
|
check-private-items = false
|
||||||
|
cognitive-complexity-threshold = 25
|
||||||
|
disallowed-macros = []
|
||||||
|
disallowed-methods = [
|
||||||
|
{ path = "std::process::Command::new", reason = "use `toolchain::command` instead as it forces the choice of a working directory" },
|
||||||
|
]
|
||||||
|
# Things that do not work due to macros can be handled by typos.toml instead.
|
||||||
|
disallowed-names = [
|
||||||
|
"acc", # accumulator
|
||||||
|
"alloc", # allocate
|
||||||
|
"alt", # alternate
|
||||||
|
"args", # arguments
|
||||||
|
"attr", # attribute
|
||||||
|
"attrs", # attributes
|
||||||
|
"auth", # authentication
|
||||||
|
"btn", # button
|
||||||
|
"buf", # buffer
|
||||||
|
"char", # character
|
||||||
|
"col", # column
|
||||||
|
"ctrl", # control
|
||||||
|
"db", # database
|
||||||
|
"dbg", # debug
|
||||||
|
"decl", # declaration
|
||||||
|
"def", # definition
|
||||||
|
"dest", # destination
|
||||||
|
"dir", # directory
|
||||||
|
"dirs", # directories
|
||||||
|
"elem", # element
|
||||||
|
"err", # error
|
||||||
|
"expr", # expression
|
||||||
|
"func", # function
|
||||||
|
"ident", # identifier
|
||||||
|
"idx", # index
|
||||||
|
"it", # item, inlay_tooltip
|
||||||
|
"len", # length
|
||||||
|
"lex", # lexer
|
||||||
|
"lit", # literal
|
||||||
|
"loc", # location
|
||||||
|
"msg", # message
|
||||||
|
"not", # notification
|
||||||
|
"opts", # options
|
||||||
|
"params", # parameters
|
||||||
|
"prev", # previous
|
||||||
|
"req", # request
|
||||||
|
"res", # result
|
||||||
|
"resp", # response
|
||||||
|
"sel", # selection
|
||||||
|
"sema", # semantics
|
||||||
|
"sh", # shell
|
||||||
|
"sig", # sign
|
||||||
|
"src", # source
|
||||||
|
"stmt", # statement
|
||||||
|
"tmp", # temporary
|
||||||
|
"ty", # r#type
|
||||||
|
"var", # variable
|
||||||
|
"vars", # variables
|
||||||
|
]
|
||||||
|
disallowed-types = [
|
||||||
|
# { path = "std::collections::HashMap", reason = "use FxHashMap" },
|
||||||
|
]
|
||||||
|
doc-valid-idents = ["..", "QoS"]
|
||||||
|
enable-raw-pointer-heuristic-for-send = true
|
||||||
|
enforce-iter-loop-reborrow = false
|
||||||
|
enforced-import-renames = []
|
||||||
|
enum-variant-name-threshold = 0
|
||||||
|
enum-variant-size-threshold = 200
|
||||||
|
excessive-nesting-threshold = 10
|
||||||
|
future-size-threshold = 16384
|
||||||
|
ignore-interior-mutability = ["bytes::Bytes"]
|
||||||
|
large-error-threshold = 128
|
||||||
|
lint-commented-code = true
|
||||||
|
literal-representation-threshold = 128
|
||||||
|
matches-for-let-else = "AllTypes"
|
||||||
|
max-fn-params-bools = 2
|
||||||
|
max-include-file-size = 1000000
|
||||||
|
max-struct-bools = 3
|
||||||
|
max-suggested-slice-pattern-length = 9
|
||||||
|
max-trait-bounds = 1
|
||||||
|
min-ident-chars-threshold = 1
|
||||||
|
# missing-docs-allow-unused = false
|
||||||
|
missing-docs-in-crate-items = false
|
||||||
|
# module-item-order-groupings = []
|
||||||
|
module-items-ordered-within-groupings = "none"
|
||||||
|
# msrv = "current version"
|
||||||
|
pass-by-value-size-limit = 256
|
||||||
|
pub-underscore-fields-behavior = "PubliclyExported"
|
||||||
|
semicolon-inside-block-ignore-singleline = false
|
||||||
|
semicolon-outside-block-ignore-multiline = false
|
||||||
|
single-char-binding-names-threshold = 0
|
||||||
|
source-item-ordering = ["enum", "impl", "module", "struct", "trait"]
|
||||||
|
stack-size-threshold = 512000
|
||||||
|
standard-macro-braces = [
|
||||||
|
{ name = "always", brace = "(" },
|
||||||
|
{ name = "anyhow::anyhow", brace = "(" },
|
||||||
|
{ name = "anyhow::bail", brace = "(" },
|
||||||
|
{ name = "anyhow::format_err", brace = "(" },
|
||||||
|
{ name = "assert_eq", brace = "(" },
|
||||||
|
{ name = "assert", brace = "(" },
|
||||||
|
{ name = "ast_enum_compound", brace = "{" },
|
||||||
|
{ name = "ast_enum_raw", brace = "{" },
|
||||||
|
{ name = "ast_enum", brace = "{" },
|
||||||
|
{ name = "ast_node", brace = "{" },
|
||||||
|
{ name = "ast_token_enum", brace = "{" },
|
||||||
|
{ name = "cfg_if", brace = "{" },
|
||||||
|
{ name = "cfg", brace = "(" },
|
||||||
|
{ name = "concat", brace = "(" },
|
||||||
|
{ name = "count_tts", brace = "(" },
|
||||||
|
{ name = "dbg", brace = "(" },
|
||||||
|
{ name = "define_semantic_token_modifiers", brace = "[" },
|
||||||
|
{ name = "define_semantic_token_types", brace = "[" },
|
||||||
|
{ name = "env", brace = "(" },
|
||||||
|
{ name = "error", brace = "(" },
|
||||||
|
{ name = "expect", brace = "[" },
|
||||||
|
{ name = "format_args", brace = "(" },
|
||||||
|
{ name = "format_err", brace = "(" },
|
||||||
|
{ name = "format_smolstr", brace = "(" },
|
||||||
|
{ name = "format_to", brace = "(" },
|
||||||
|
{ name = "format", brace = "(" },
|
||||||
|
{ name = "impl_from", brace = "(" },
|
||||||
|
{ name = "implement", brace = "(" },
|
||||||
|
{ name = "include", brace = "(" },
|
||||||
|
{ name = "info_span", brace = "(" },
|
||||||
|
{ name = "info", brace = "(" },
|
||||||
|
{ name = "intern_id", brace = "(" },
|
||||||
|
{ name = "match_ast", brace = "{" },
|
||||||
|
{ name = "matches", brace = "(" },
|
||||||
|
{ name = "mod_items", brace = "{" },
|
||||||
|
{ name = "never", brace = "(" },
|
||||||
|
{ name = "opt", brace = "(" },
|
||||||
|
{ name = "panic", brace = "(" },
|
||||||
|
{ name = "print", brace = "(" },
|
||||||
|
{ name = "println", brace = "(" },
|
||||||
|
{ name = "prop_oneof", brace = "[" },
|
||||||
|
{ name = "proptest", brace = "{" },
|
||||||
|
{ name = "select", brace = "{" },
|
||||||
|
{ name = "smallvec::smallvec", brace = "[" },
|
||||||
|
{ name = "smallvec", brace = "[" },
|
||||||
|
{ name = "span", brace = "(" },
|
||||||
|
{ name = "stringify", brace = "(" },
|
||||||
|
{ name = "T", brace = "[" },
|
||||||
|
{ name = "thread_local", brace = "{" },
|
||||||
|
{ name = "todo", brace = "(" },
|
||||||
|
{ name = "trace", brace = "(" },
|
||||||
|
{ name = "tracing::debug", brace = "(" },
|
||||||
|
{ name = "tracing::enabled", brace = "(" },
|
||||||
|
{ name = "tracing::error", brace = "(" },
|
||||||
|
{ name = "tracing::info_span", brace = "(" },
|
||||||
|
{ name = "tracing::info", brace = "(" },
|
||||||
|
{ name = "tracing::trace", brace = "(" },
|
||||||
|
{ name = "tracing::warn", brace = "(" },
|
||||||
|
{ name = "try_default", brace = "(" },
|
||||||
|
{ name = "unimplemented", brace = "(" },
|
||||||
|
{ name = "unreachable", brace = "(" },
|
||||||
|
{ name = "vec", brace = "[" },
|
||||||
|
{ name = "warn", brace = "(" },
|
||||||
|
{ name = "write", brace = "(" },
|
||||||
|
{ name = "writeln", brace = "(" },
|
||||||
|
{ name = "xflags::xflags", brace = "{" },
|
||||||
|
{ name = "xflags", brace = "{" },
|
||||||
|
]
|
||||||
|
struct-field-name-threshold = 0
|
||||||
|
suppress-restriction-lint-in-const = false
|
||||||
|
too-large-for-stack = 200
|
||||||
|
too-many-arguments-threshold = 7
|
||||||
|
too-many-lines-threshold = 100
|
||||||
|
trait-assoc-item-kinds-order = ["const", "type", "fn"]
|
||||||
|
trivial-copy-size-limit = 128
|
||||||
|
type-complexity-threshold = 250
|
||||||
|
unnecessary-box-size = 128
|
||||||
|
unreadable-literal-lint-fractions = true
|
||||||
|
upper-case-acronyms-aggressive = true
|
||||||
|
vec-box-size-threshold = 4096
|
||||||
|
verbose-bit-mask-threshold = 1
|
||||||
|
warn-on-all-wildcard-imports = false
|
||||||
|
warn-unsafe-macro-metavars-in-private-macros = false
|
||||||
12
crates/the-app/Cargo.toml
Normal file
12
crates/the-app/Cargo.toml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
[package]
|
||||||
|
name = "the-app"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
license = "EUPL-1.2"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
the-lib.workspace = true
|
||||||
|
regex = "*"
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
workspace = true
|
||||||
19
crates/the-app/src/main.rs
Normal file
19
crates/the-app/src/main.rs
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
#[must_use]
|
||||||
|
pub fn as_u64(number: u8) -> u64 {
|
||||||
|
u64::from(number)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut nums = vec![1, 2, 3];
|
||||||
|
nums.clear();
|
||||||
|
|
||||||
|
println!("Hello, world! {nums:?}");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
#[test]
|
||||||
|
fn trivial() {
|
||||||
|
assert_eq!(1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
10
crates/the-lib/Cargo.toml
Normal file
10
crates/the-lib/Cargo.toml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
[package]
|
||||||
|
name = "the-lib"
|
||||||
|
version = "0.0.0"
|
||||||
|
edition = "2024"
|
||||||
|
license = "EUPL-1.2"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
workspace = true
|
||||||
18
crates/the-lib/src/lib.rs
Normal file
18
crates/the-lib/src/lib.rs
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
#[must_use]
|
||||||
|
pub const fn add(
|
||||||
|
left: u64,
|
||||||
|
right: u64,
|
||||||
|
) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
49
deny.toml
Normal file
49
deny.toml
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
[graph]
|
||||||
|
# We don't expect to run on different architectures than the normal tier-1 targets
|
||||||
|
targets = [
|
||||||
|
"x86_64-unknown-linux-gnu",
|
||||||
|
"aarch64-unknown-linux-gnu",
|
||||||
|
"x86_64-unknown-linux-musl",
|
||||||
|
"aarch64-apple-darwin",
|
||||||
|
"x86_64-apple-darwin",
|
||||||
|
"x86_64-pc-windows-msvc",
|
||||||
|
]
|
||||||
|
all-features = true
|
||||||
|
|
||||||
|
[advisories]
|
||||||
|
ignore = []
|
||||||
|
|
||||||
|
[licenses]
|
||||||
|
version = 2
|
||||||
|
allow = [
|
||||||
|
"EUPL-1.2",
|
||||||
|
#"0BSD",
|
||||||
|
#"Apache-2.0 WITH LLVM-exception",
|
||||||
|
#"Apache-2.0",
|
||||||
|
# "BSD-2-Clause",
|
||||||
|
#"BSD-3-Clause",
|
||||||
|
#"BSL-1.0",
|
||||||
|
#"CC0-1.0",
|
||||||
|
#"ISC",
|
||||||
|
# "MIT-0",
|
||||||
|
"MIT",
|
||||||
|
#"MPL-2.0",
|
||||||
|
#"Unicode-3.0",
|
||||||
|
"Unlicense",
|
||||||
|
#"Zlib",
|
||||||
|
]
|
||||||
|
exceptions = [
|
||||||
|
# { name = "unicode-ident", allow = ["Unicode-DFS-2016"] }
|
||||||
|
]
|
||||||
|
|
||||||
|
[bans]
|
||||||
|
multiple-versions = "warn"
|
||||||
|
wildcards = "deny"
|
||||||
|
# Certain crates that we do not want multiple versions of in the dependency tree
|
||||||
|
deny = []
|
||||||
|
|
||||||
|
[sources]
|
||||||
|
unknown-registry = "warn"
|
||||||
|
unknown-git = "warn"
|
||||||
|
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
|
||||||
|
allow-git = []
|
||||||
100
flake.nix
Normal file
100
flake.nix
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
{
|
||||||
|
description = "Description for the project";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
devenv-root = {
|
||||||
|
url = "file+file:///dev/null";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
nixpkgs.url = "github:cachix/devenv-nixpkgs/rolling";
|
||||||
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
|
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
|
||||||
|
devenv.url = "github:cachix/devenv";
|
||||||
|
nix2container.url = "github:nlewo/nix2container";
|
||||||
|
nix2container.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
mk-shell-bin.url = "github:rrbutani/nix-mk-shell-bin";
|
||||||
|
|
||||||
|
fenix.url = "github:nix-community/fenix/monthly";
|
||||||
|
fenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixConfig = {
|
||||||
|
extra-trusted-public-keys = [
|
||||||
|
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
];
|
||||||
|
extra-substituters = [
|
||||||
|
"https://devenv.cachix.org"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
inputs@{ flake-parts, devenv-root, ... }:
|
||||||
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||||
|
imports = [
|
||||||
|
inputs.devenv.flakeModule
|
||||||
|
];
|
||||||
|
systems = [
|
||||||
|
"x86_64-linux"
|
||||||
|
"i686-linux"
|
||||||
|
"x86_64-darwin"
|
||||||
|
"aarch64-linux"
|
||||||
|
"aarch64-darwin"
|
||||||
|
];
|
||||||
|
|
||||||
|
perSystem =
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
self',
|
||||||
|
inputs',
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
devenv.shells.default =
|
||||||
|
let
|
||||||
|
fnx = inputs'.fenix.packages;
|
||||||
|
rustToolchain = fnx.beta.toolchain;
|
||||||
|
|
||||||
|
# rustToolchain = fnx.combine [
|
||||||
|
# fnx.complete.cargo
|
||||||
|
# fnx.complete.clippy
|
||||||
|
# fnx.complete.rust-src
|
||||||
|
# fnx.complete.rustc
|
||||||
|
# fnx.complete.rustfmt
|
||||||
|
# ];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = "my-project";
|
||||||
|
|
||||||
|
packages = [
|
||||||
|
pkgs.dioxus-cli
|
||||||
|
pkgs.cargo-expand
|
||||||
|
pkgs.cargo-deny
|
||||||
|
pkgs.cargo-nextest
|
||||||
|
pkgs.typos
|
||||||
|
rustToolchain
|
||||||
|
fnx.rust-analyzer
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
scripts.checkall.exec = ''
|
||||||
|
set -xeuo pipefail
|
||||||
|
|
||||||
|
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||||
|
cargo deny check all -D warnings
|
||||||
|
cargo fmt --all -- --check
|
||||||
|
cargo nextest run --workspace --all-targets --all-features --status-level all
|
||||||
|
cargo test
|
||||||
|
'';
|
||||||
|
# DO NOT ENABLE RUST because devenv messes up the ability
|
||||||
|
# to build rust-src
|
||||||
|
# languages.rust = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
flake = { };
|
||||||
|
};
|
||||||
|
}
|
||||||
76
rustfmt.toml
Normal file
76
rustfmt.toml
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
array_width = 60
|
||||||
|
attr_fn_like_width = 70
|
||||||
|
# binop_separator = "Front"
|
||||||
|
# blank_lines_lower_bound = 0
|
||||||
|
# blank_lines_upper_bound = 1
|
||||||
|
# brace_style = "SameLineWhere"
|
||||||
|
chain_width = 60
|
||||||
|
# color = "Auto"
|
||||||
|
# combine_control_expr = true
|
||||||
|
# comment_width = 80
|
||||||
|
# condense_wildcard_suffixes = false
|
||||||
|
# control_brace_style = "AlwaysSameLine"
|
||||||
|
disable_all_formatting = false
|
||||||
|
edition = "2024"
|
||||||
|
# empty_item_single_line = true
|
||||||
|
# enum_discrim_align_threshold = 0
|
||||||
|
# error_on_line_overflow = false
|
||||||
|
# error_on_unformatted = false
|
||||||
|
fn_call_width = 60
|
||||||
|
fn_params_layout = "Vertical"
|
||||||
|
# fn_single_line = false
|
||||||
|
force_explicit_abi = true
|
||||||
|
# force_multiline_blocks = false
|
||||||
|
# format_code_in_doc_comments = false
|
||||||
|
# doc_comment_code_block_width = 100
|
||||||
|
# format_generated_files = true
|
||||||
|
# generated_marker_line_search_limit = 5
|
||||||
|
# format_macro_matchers = true
|
||||||
|
# format_macro_bodies = true
|
||||||
|
# skip_macro_invocations = []
|
||||||
|
# format_strings = false
|
||||||
|
hard_tabs = false
|
||||||
|
# hex_literal_case = "Lower"
|
||||||
|
# show_parse_errors = true
|
||||||
|
# ignore = []
|
||||||
|
# imports_indent = "Block"
|
||||||
|
# imports_layout = "Vertical"
|
||||||
|
# indent_style = "Block"
|
||||||
|
# inline_attribute_width = 0
|
||||||
|
# match_arm_blocks = true
|
||||||
|
match_arm_leading_pipes = "Never"
|
||||||
|
match_block_trailing_comma = true
|
||||||
|
max_width = 100
|
||||||
|
merge_derives = true
|
||||||
|
# imports_granularity = "Crate"
|
||||||
|
newline_style = "Unix"
|
||||||
|
# normalize_comments = false
|
||||||
|
# normalize_doc_attributes = false
|
||||||
|
# overflow_delimited_expr = false
|
||||||
|
remove_nested_parens = true
|
||||||
|
# reorder_impl_items = true
|
||||||
|
# reorder_imports = true
|
||||||
|
# group_imports = "StdExternalCrate"
|
||||||
|
reorder_modules = true
|
||||||
|
# required_version = "1.8.0"
|
||||||
|
short_array_element_width_threshold = 10
|
||||||
|
single_line_if_else_max_width = 50
|
||||||
|
single_line_let_else_max_width = 50
|
||||||
|
# space_after_colon = true
|
||||||
|
# space_before_colon = false
|
||||||
|
# spaces_around_ranges = false
|
||||||
|
# struct_field_align_threshold = 0
|
||||||
|
# struct_lit_single_line = true
|
||||||
|
struct_lit_width = 18
|
||||||
|
struct_variant_width = 35
|
||||||
|
# style_edition = "2024"
|
||||||
|
tab_spaces = 4
|
||||||
|
# trailing_comma = "Vertical"
|
||||||
|
# trailing_semicolon = true
|
||||||
|
# type_punctuation_density = "Wide"
|
||||||
|
# unstable_features = true
|
||||||
|
use_field_init_shorthand = true
|
||||||
|
use_small_heuristics = "Default"
|
||||||
|
use_try_shorthand = true
|
||||||
|
# where_single_line = false
|
||||||
|
# wrap_comments = false
|
||||||
102
typos.toml
Normal file
102
typos.toml
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
[files]
|
||||||
|
extend-exclude = [
|
||||||
|
"*.patch", # Automatically generated files that should not be manually modified.
|
||||||
|
"*.bin", # Binary files
|
||||||
|
".git/", # Version control files
|
||||||
|
"clippy.toml", # Intentional typos
|
||||||
|
"flake.nix", # Out of scope
|
||||||
|
]
|
||||||
|
ignore-hidden = false
|
||||||
|
|
||||||
|
# Corrections take the form of a key/value pair. The key is the incorrect word
|
||||||
|
# and the value is the correct word. If the key and value are the same, the
|
||||||
|
# word is treated as always correct. If the value is an empty string, the word
|
||||||
|
# is treated as always incorrect.
|
||||||
|
|
||||||
|
[default]
|
||||||
|
locale = "en-us"
|
||||||
|
extend-ignore-re = [
|
||||||
|
"(?Rm)^.*(#|//)\\s*spellchecker:disable-line$",
|
||||||
|
"(?Rm)^.*<!--\\s*spellchecker:disable-line\\s*-->$",
|
||||||
|
"(?Rm) .+ ...\"$",
|
||||||
|
]
|
||||||
|
extend-ignore-identifiers-re = []
|
||||||
|
|
||||||
|
# Match Whole Word - Case Sensitive
|
||||||
|
[default.extend-identifiers]
|
||||||
|
"err" = "error"
|
||||||
|
"idx" = "index"
|
||||||
|
|
||||||
|
# Match Inside a Word - Case Insensitive
|
||||||
|
[default.extend-words]
|
||||||
|
"jod" = "jod"
|
||||||
|
"anser" = "anser"
|
||||||
|
# lsp_types
|
||||||
|
"typ" = "typ"
|
||||||
|
# "perf" = "performance"
|
||||||
|
# Contractions
|
||||||
|
"don't" = "do not"
|
||||||
|
"can't" = "cannot"
|
||||||
|
"isn't" = "is not"
|
||||||
|
"wouldn't" = "would not"
|
||||||
|
"aren't" = "are not"
|
||||||
|
"couldn't" = "could not"
|
||||||
|
"shouldn't" = "should not"
|
||||||
|
"won't" = "will not"
|
||||||
|
"haven't" = "have not"
|
||||||
|
"hasn't" = "has not"
|
||||||
|
"hadn't" = "had not"
|
||||||
|
"doesn't" = "does not"
|
||||||
|
"didn't" = "did not"
|
||||||
|
"mustn't" = "must not"
|
||||||
|
"mightn't" = "might not"
|
||||||
|
"shan't" = "shall not"
|
||||||
|
"weren't" = "were not"
|
||||||
|
"wasn't" = "was not"
|
||||||
|
"needn't" = "need not"
|
||||||
|
"let's" = "let us"
|
||||||
|
"there's" = "there is"
|
||||||
|
"who's" = "who is"
|
||||||
|
"what's" = "what is"
|
||||||
|
"where's" = "where is"
|
||||||
|
"when's" = "when is"
|
||||||
|
"why's" = "why is"
|
||||||
|
"how's" = "how is"
|
||||||
|
# "params" = "parameters"
|
||||||
|
# "req" = "request"
|
||||||
|
"res" = "result"
|
||||||
|
# "args" = "arguments"
|
||||||
|
"sig" = "signature"
|
||||||
|
# handled by clippy due to std using the abbreviation
|
||||||
|
# "dir" = "directory"
|
||||||
|
# "dirs" = "directories" # Used by dependencies
|
||||||
|
"resp" = "response"
|
||||||
|
"msg" = "message"
|
||||||
|
"nav" = "navigation"
|
||||||
|
# "dbg" = "debug"
|
||||||
|
# "ctrl" = "control"
|
||||||
|
"decl" = "declaration"
|
||||||
|
"btn" = "button"
|
||||||
|
"elem" = "element"
|
||||||
|
# "attr" = "attribute"
|
||||||
|
# "src" = "source"
|
||||||
|
"dest" = "destination"
|
||||||
|
"tmp" = "temporary"
|
||||||
|
"auth" = "authentication"
|
||||||
|
"stmt" = "statement"
|
||||||
|
# "alloc" = "allocate"
|
||||||
|
# "expr" = "expression"
|
||||||
|
"prev" = "previous"
|
||||||
|
"sel" = "selection"
|
||||||
|
# "col" = "column"
|
||||||
|
# "lit" = "literal"
|
||||||
|
# "ident" = "identifier"
|
||||||
|
# "ty" = "type"
|
||||||
|
# Be concise
|
||||||
|
":-)" = "be concise"
|
||||||
|
";-)" = "be concise"
|
||||||
|
"is going on" = "happens"
|
||||||
|
"take a look at" = "examine"
|
||||||
|
|
||||||
|
# "argument" = "input"
|
||||||
|
# "response" = "answer"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue