Given this code
fn main() {
let x = 16;
println!("{}", x.sqrt());
}
I get an error:
Compiling sqrt v0.1.0 (/home/gabor/work/rust.code-maven.com/slides/rust/examples/numbers/sqrt)
error[E0689]: can't call method sqrt
on ambiguous numeric type {integer}
--> src/main.rs:3:22
|
3 | println!("{}", x.sqrt());
| ^^^^
|
help: you must specify a type for this binding, like i32
|
2 | let x: i32 = 16;
| +++++
For more information about this error, try rustc --explain E0689
.
error: could not compile sqrt
(bin "sqrt") due to 1 previous error
Following the suggestion I try:
```rust
fn main() {
let x: i32 = 16;
println!("{}", x.sqrt());
}
and get this error:
Compiling sqrt v0.1.0 (/home/gabor/work/rust.code-maven.com/slides/rust/examples/numbers/sqrt)
error[E0599]: no method named `sqrt` found for type `i32` in the current scope
--> src/main.rs:8:22
|
8 | println!("{}", x.sqrt());
| ^^^^ method not found in `i32`
For more information about this error, try `rustc --explain E0599`.
error: could not compile `sqrt` (bin "sqrt") due to 1 previous error
I need to convert the number into floating point for the sqrt to work.
fn main() {
let x: i32 = 16;
let x_square = (x as f32).sqrt();
println!("The square of {x} is {x_square}");
}
Wouldn't it be possible for the first suggestion to not recommend an incorrect solution?