## 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

## Rust Solution

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);
}

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