blob: 291bad24a643b13f1f4e09b58d35f999a7bcce7d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
### What it does
Checks for `new` not returning a type that contains `Self`.
### Why is this bad?
As a convention, `new` methods are used to make a new
instance of a type.
### Example
In an impl block:
```
impl Foo {
fn new() -> NotAFoo {
}
}
```
```
struct Bar(Foo);
impl Foo {
// Bad. The type name must contain `Self`
fn new() -> Bar {
}
}
```
```
impl Foo {
// Good. Return type contains `Self`
fn new() -> Result<Foo, FooError> {
}
}
```
Or in a trait definition:
```
pub trait Trait {
// Bad. The type name must contain `Self`
fn new();
}
```
```
pub trait Trait {
// Good. Return type contains `Self`
fn new() -> Self;
}
```
|