Given a non-negative integer `x`

, compute and return *the square root of* `x`

.

Since the return type is an integer, the decimal digits are **truncated**, and only **the integer part** of the result is returned.

**Example 1:**

Input:x = 4Output:2

**Example 2:**

Input:x = 8Output:2Explanation:The square root of 8 is 2.82842..., and since the decimal part is truncated, 2 is returned.

**Constraints:**

`0 <= x <= 2`

^{31}- 1

```
struct Solution;
impl Solution {
fn my_sqrt(x: i32) -> i32 {
(x as f64).sqrt().floor() as i32
}
}
#[test]
fn test() {
assert_eq!(Solution::my_sqrt(8), 2);
}
```