35. Search Insert Position

Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

Example 1:

```Input: nums = [1,3,5,6], target = 5
Output: 2
```

Example 2:

```Input: nums = [1,3,5,6], target = 2
Output: 1
```

Example 3:

```Input: nums = [1,3,5,6], target = 7
Output: 4
```

Example 4:

```Input: nums = [1,3,5,6], target = 0
Output: 0
```

Example 5:

```Input: nums = [1], target = 0
Output: 0
```

Constraints:

• `1 <= nums.length <= 104`
• `-104 <= nums[i] <= 104`
• `nums` contains distinct values sorted in ascending order.
• `-104 <= target <= 104`

35. Search Insert Position
``````struct Solution;

impl Solution {
fn search_insert(nums: Vec<i32>, target: i32) -> i32 {
match nums.binary_search(&target) {
Ok(i) => i as i32,
Err(i) => i as i32,
}
}
}

#[test]
fn test() {
let nums = vec![1, 3, 5, 6];
let target = 5;
assert_eq!(Solution::search_insert(nums, target), 2);
let nums = vec![1, 3, 5, 6];
let target = 2;
assert_eq!(Solution::search_insert(nums, target), 1);
let nums = vec![1, 3, 5, 6];
let target = 7;
assert_eq!(Solution::search_insert(nums, target), 4);
let nums = vec![1, 3, 5, 6];
let target = 0;
assert_eq!(Solution::search_insert(nums, target), 0);
}
``````