Skip to content

Why not use this "Circle :: new ()" #14770

@electricface

Description

@electricface
use std::f64::consts::PI;
trait Shape { fn new(area: f64) -> Self; }
struct Circle { radius: f64 }
struct Square { length: f64 }

impl Shape for Circle {
    fn new(area: f64) -> Circle { Circle { radius: (area / PI).sqrt() } }
}
impl Shape for Square {
    fn new(area: f64) -> Square { Square { length: area.sqrt() } }
}

let area = 42.5;
let c: Circle = Shape::new(area);
let s: Square = Shape::new(area);

Why is this wrong

    let c = Circle::new( area );
    let s = Square::new( area );
traits-test.rs:126:10: 126:21 error: unresolved name
traits-test.rs:126  let c = Circle::new( area );
                            ^~~~~~~~~~~
traits-test.rs:126:10: 126:21 error: use of undeclared module `Circle`
traits-test.rs:126  let c = Circle::new( area );
                            ^~~~~~~~~~~
traits-test.rs:126:10: 126:21 error: unresolved name `Circle::new`.
traits-test.rs:126  let c = Circle::new( area );
                            ^~~~~~~~~~~
traits-test.rs:127:10: 127:21 error: unresolved name
traits-test.rs:127  let s = Square::new( area );
                            ^~~~~~~~~~~
traits-test.rs:127:10: 127:21 error: use of undeclared module `Square`
traits-test.rs:127  let s = Square::new( area );
                            ^~~~~~~~~~~
traits-test.rs:127:10: 127:21 error: unresolved name `Square::new`.
traits-test.rs:127  let s = Square::new( area );
                            ^~~~~~~~~~~
error: aborting due to 6 previous errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions