Skip to content

Commit 8e90f5e

Browse files
Merge pull request #2016 from kristof-mattei/r2
feat: restrict ALL
2 parents e9b02a0 + 28544d3 commit 8e90f5e

File tree

6 files changed

+158
-137
lines changed

6 files changed

+158
-137
lines changed

Cargo.lock

Lines changed: 0 additions & 132 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 136 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,141 @@ complexity = "warn"
1919
correctness = "warn"
2020
pedantic = "warn"
2121
perf = "warn"
22-
# restriction = "warn"
2322
style = "warn"
2423
suspicious = "warn"
2524

25+
# restriction
26+
27+
# Lib only
28+
# alloc_instead_of_core = { level = "deny", priority = 127 }
29+
# std_instead_of_alloc = { level = "deny", priority = 127 }
30+
# std_instead_of_core = { level = "deny", priority = 127 }
31+
# exhaustive_enums = { level = "deny", priority = 127 }
32+
# exhaustive_structs = { level = "deny", priority = 127 }
33+
# empty_enum_variants_with_brackets = { level = "deny", priority = 127 }
34+
# empty_structs_with_brackets = { level = "deny", priority = 127 }
35+
# missing_inline_in_public_items = { level = "deny", priority = 127 }
36+
37+
absolute_paths = { level = "deny", priority = 127 }
38+
allow_attributes = { level = "deny", priority = 127 }
39+
allow_attributes_without_reason = { level = "deny", priority = 127 }
40+
# Debatable
41+
# arithmetic_side_effects = { level = "deny", priority = 127 }
42+
as_conversions = { level = "deny", priority = 127 }
43+
as_pointer_underscore = { level = "deny", priority = 127 }
44+
as_underscore = { level = "deny", priority = 127 }
45+
assertions_on_result_states = { level = "deny", priority = 127 }
46+
big_endian_bytes = { level = "deny", priority = 127 }
47+
cfg_not_test = { level = "deny", priority = 127 }
2648
# ensure we do Arc::clone(&arc) instead of arc.clone()
2749
clone_on_ref_ptr = { level = "deny", priority = 127 }
50+
create_dir = { level = "deny", priority = 127 }
51+
dbg_macro = { level = "deny", priority = 127 }
52+
decimal_literal_representation = { level = "deny", priority = 127 }
53+
# Debatable
54+
# default_numeric_fallback = { level = "deny", priority = 127 }
55+
default_union_representation = { level = "deny", priority = 127 }
56+
deref_by_slicing = { level = "deny", priority = 127 }
57+
doc_include_without_cfg = { level = "deny", priority = 127 }
58+
else_if_without_else = { level = "deny", priority = 127 }
59+
empty_drop = { level = "deny", priority = 127 }
60+
error_impl_error = { level = "deny", priority = 127 }
61+
exit = { level = "deny", priority = 127 }
62+
field_scoped_visibility_modifiers = { level = "deny", priority = 127 }
63+
filetype_is_file = { level = "deny", priority = 127 }
64+
# Debatable
65+
# float_arithmetic = { level = "deny", priority = 127 }
66+
float_cmp_const = { level = "deny", priority = 127 }
67+
fn_to_numeric_cast_any = { level = "deny", priority = 127 }
68+
# Debatable
69+
# get_unwrap = { level = "deny", priority = 127 }
70+
host_endian_bytes = { level = "deny", priority = 127 }
71+
# Debatable
72+
# if_then_some_else_none = { level = "deny", priority = 127 }
73+
impl_trait_in_params = { level = "deny", priority = 127 }
74+
# Debatable
75+
# indexing_slicing = { level = "deny", priority = 127 }
76+
infinite_loop = { level = "deny", priority = 127 }
77+
inline_asm_x86_att_syntax = { level = "deny", priority = 127 }
78+
# Debatable
79+
# integer_division = { level = "deny", priority = 127 }
80+
# Debatable
81+
# integer_division_remainder_used = { level = "deny", priority = 127 }
82+
iter_over_hash_type = { level = "deny", priority = 127 }
83+
large_include_file = { level = "deny", priority = 127 }
84+
let_underscore_must_use = { level = "deny", priority = 127 }
85+
let_underscore_untyped = { level = "deny", priority = 127 }
86+
little_endian_bytes = { level = "deny", priority = 127 }
87+
lossy_float_literal = { level = "deny", priority = 127 }
88+
# Debatable
89+
# map_err_ignore = { level = "deny", priority = 127 }
90+
map_with_unused_argument_over_ranges = { level = "deny", priority = 127 }
91+
missing_assert_message = { level = "deny", priority = 127 }
92+
mixed_read_write_in_expression = { level = "deny", priority = 127 }
93+
mod_module_files = { level = "deny", priority = 127 }
94+
# Debatable
95+
# module_name_repetitions = { level = "deny", priority = 127 }
96+
modulo_arithmetic = { level = "deny", priority = 127 }
97+
multiple_inherent_impl = { level = "deny", priority = 127 }
98+
multiple_unsafe_ops_per_block = { level = "deny", priority = 127 }
99+
mutex_atomic = { level = "deny", priority = 127 }
100+
mutex_integer = { level = "deny", priority = 127 }
101+
needless_raw_strings = { level = "deny", priority = 127 }
102+
non_ascii_literal = { level = "deny", priority = 127 }
103+
non_zero_suggestions = { level = "deny", priority = 127 }
104+
panic_in_result_fn = { level = "deny", priority = 127 }
105+
# Debatable
106+
# partial_pub_fields = { level = "deny", priority = 127 }
107+
pattern_type_mismatch = { level = "deny", priority = 127 }
108+
precedence_bits = { level = "deny", priority = 127 }
109+
# Debatable
110+
# print_stderr = { level = "deny", priority = 127 }
111+
# Debatable
112+
# print_stdout = { level = "deny", priority = 127 }
113+
pub_use = { level = "deny", priority = 127 }
114+
pub_without_shorthand = { level = "deny", priority = 127 }
115+
rc_buffer = { level = "deny", priority = 127 }
116+
rc_mutex = { level = "deny", priority = 127 }
117+
redundant_test_prefix = { level = "deny", priority = 127 }
118+
renamed_function_params = { level = "deny", priority = 127 }
119+
rest_pat_in_fully_bound_structs = { level = "deny", priority = 127 }
120+
return_and_then = { level = "deny", priority = 127 }
121+
# Debatable, need to think about it
122+
# same_name_method = { level = "deny", priority = 127 }
123+
semicolon_inside_block = { level = "deny", priority = 127 }
124+
# Debatable
125+
# shadow_reuse = { level = "deny", priority = 127 }
126+
# Debatable
127+
# shadow_same = { level = "deny", priority = 127 }
128+
# Debatable
129+
# shadow_unrelated = { level = "deny", priority = 127 }
130+
str_to_string = { level = "deny", priority = 127 }
131+
string_add = { level = "deny", priority = 127 }
132+
string_lit_chars_any = { level = "deny", priority = 127 }
133+
# Debatable, but no
134+
# string_slice = { level = "deny", priority = 127 }
135+
string_to_string = { level = "deny", priority = 127 }
136+
suspicious_xor_used_as_pow = { level = "deny", priority = 127 }
137+
tests_outside_test_module = { level = "deny", priority = 127 }
138+
todo = { level = "deny", priority = 127 }
139+
try_err = { level = "deny", priority = 127 }
140+
undocumented_unsafe_blocks = { level = "deny", priority = 127 }
141+
unimplemented = { level = "deny", priority = 127 }
142+
unnecessary_safety_comment = { level = "deny", priority = 127 }
143+
unnecessary_safety_doc = { level = "deny", priority = 127 }
144+
unnecessary_self_imports = { level = "deny", priority = 127 }
145+
unneeded_field_pattern = { level = "deny", priority = 127 }
146+
# No, to signify invariants
147+
# unreachable = { level = "deny", priority = 127 }
148+
unseparated_literal_suffix = { level = "deny", priority = 127 }
149+
unused_result_ok = { level = "deny", priority = 127 }
150+
unused_trait_names = { level = "deny", priority = 127 }
151+
# No, we separate fatal from recoverable
152+
# unwrap_in_result = { level = "deny", priority = 127 }
153+
verbose_file_reads = { level = "deny", priority = 127 }
154+
wildcard_enum_match_arm = { level = "deny", priority = 127 }
155+
156+
# end restriction
28157

29158
# this has 0 performance implications, the binding is compiled away, and it could cause issues
30159
# when done blindly, plus it makes it harder to debug as you cannot put breakpoints on return
@@ -38,6 +167,12 @@ multiple_crate_versions = { level = "allow", priority = 127 }
38167
# issues when refactoring
39168
needless_continue = { level = "allow", priority = 127 }
40169

170+
# fights with `pattern_type_mismatch`
171+
needless_borrowed_reference = { level = "allow", priority = 127 }
172+
173+
# Conflicts with `else_if_without_else`
174+
redundant_else = { level = "allow", priority = 127 }
175+
41176
# this one causes confusion when combining variables (`foo`) and
42177
# dereferenced variables (`foo.bar`). The latter cannot be inlined
43178
# so we don't inline anything
@@ -49,7 +184,3 @@ non_ascii_idents = { level = "deny", priority = 127 }
49184

50185
[dependencies]
51186
color-eyre = "0.6.5"
52-
53-
# OpenSSL for musl
54-
[target.'cfg(all(any(target_arch="x86_64", target_arch="aarch64"), target_os="linux", target_env="musl"))'.dependencies]
55-
openssl = { version = "0.10.73", features = ["vendored"] }

build-all.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
4+
build() {
5+
APPLICATION_NAME=$1
6+
PLATFORM=$2
7+
docker build \
8+
--file Dockerfile . \
9+
--tag $APPLICATION_NAME:latest \
10+
--build-arg APPLICATION_NAME=$APPLICATION_NAME \
11+
--platform $PLATFORM \
12+
--progress=plain
13+
}
14+
15+
name=$(basename ${PWD})
16+
17+
build $name linux/amd64
18+
build $name linux/arm64

clippy.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
absolute-paths-allowed-crates = ["std"]

src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ fn quz() -> &'static str {
3333
"Quz"
3434
}
3535

36+
#[expect(clippy::todo, reason = "Seed code")]
3637
fn main() -> Result<(), color_eyre::Report> {
3738
color_eyre::install()?;
3839

tests/integration_tests.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![expect(clippy::tests_outside_test_module, reason = "Integration tests")]
2+
13
#[test]
24
fn assert_world_ok() {
35
let cls1 = || true;

0 commit comments

Comments
 (0)