diff --git a/maud/tests/control_structures.rs b/maud/tests/control_structures.rs
index c408c6b..504eead 100644
--- a/maud/tests/control_structures.rs
+++ b/maud/tests/control_structures.rs
@@ -68,7 +68,6 @@ fn while_expr() {
 #[test]
 fn while_let_expr() {
     let mut numbers = (0..3).into_iter();
-    #[cfg_attr(feature = "cargo-clippy", allow(while_let_on_iterator))]
     let s = html! {
         ul {
             @while let Some(n) = numbers.next() {
diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs
index b163476..b7621a4 100644
--- a/maud_macros/src/lib.rs
+++ b/maud_macros/src/lib.rs
@@ -2,12 +2,13 @@
 #![feature(proc_macro_non_items)]
 #![feature(proc_macro_quote)]
 #![feature(proc_macro_span)]
+#![feature(tool_lints)]
 
 #![doc(html_root_url = "https://docs.rs/maud_macros/0.18.1")]
 
 // TokenStream values are reference counted, and the mental overhead of tracking
 // lifetimes outweighs the marginal gains from explicit borrowing
-#![cfg_attr(feature = "cargo-clippy", allow(needless_pass_by_value))]
+#![allow(clippy::needless_pass_by_value)]
 
 extern crate literalext;
 #[macro_use] extern crate matches;