### What it does Checks for function arguments and let bindings denoted as `ref`. ### Why is this bad? The `ref` declaration makes the function take an owned value, but turns the argument into a reference (which means that the value is destroyed when exiting the function). This adds not much value: either take a reference type, or take an owned value and create references in the body. For let bindings, `let x = &foo;` is preferred over `let ref x = foo`. The type of `x` is more obvious with the former. ### Known problems If the argument is dereferenced within the function, removing the `ref` will lead to errors. This can be fixed by removing the dereferences, e.g., changing `*x` to `x` within the function. ### Example ``` fn foo(ref _x: u8) {} ``` Use instead: ``` fn foo(_x: &u8) {} ```