## 29. Divide Two Integers

Given two integers `dividend` and `divisor`, divide two integers without using multiplication, division, and mod operator.

Return the quotient after dividing `dividend` by `divisor`.

The integer division should truncate toward zero, which means losing its fractional part. For example, `truncate(8.345) = 8` and `truncate(-2.7335) = -2`.

Note:

• Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For this problem, assume that your function returns 231 − 1 when the division result overflows.

Example 1:

```Input: dividend = 10, divisor = 3
Output: 3
Explanation: 10/3 = truncate(3.33333..) = 3.
```

Example 2:

```Input: dividend = 7, divisor = -3
Output: -2
Explanation: 7/-3 = truncate(-2.33333..) = -2.
```

Example 3:

```Input: dividend = 0, divisor = 1
Output: 0
```

Example 4:

```Input: dividend = 1, divisor = 1
Output: 1
```

Constraints:

• `-231 <= dividend, divisor <= 231 - 1`
• `divisor != 0`

## Rust Solution

``````struct Solution;

use std::i32;

impl Solution {
fn divide(dividend: i32, divisor: i32) -> i32 {
if let Some(res) = dividend.checked_div(divisor) {
res
} else {
i32::MAX
}
}
}

#[test]
fn test() {
let dividend = 10;
let divisor = 3;
let res = 3;
assert_eq!(Solution::divide(dividend, divisor), res);
let dividend = 7;
let divisor = -3;
let res = -2;
assert_eq!(Solution::divide(dividend, divisor), res);
let dividend = -2_147_483_648;
let divisor = 1;
let res = -2_147_483_648;
assert_eq!(Solution::divide(dividend, divisor), res);
}
``````

Having problems with this solution? Click here to submit an issue on github.