You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: _321_create_maximum_number.rs
    path of file: ./repos/rustgym/leetcode/src/d3
    
    the code of the file until where you have to start completion: struct Solution;

impl Solution {
    fn max_number(nums1: Vec<i32>, nums2: Vec<i32>, k: i32) -> Vec<i32> {
        let n1 = nums1.len();
        let n2 = nums2.len();
        let k = k as usize;
        let mut max_merged: Option<Vec<i32>> = None;
        for size1 in 0..=k.min(n1) {
            let size2 = k - size1;
            if size2 > n2 {
                continue;
            }
            let max1 = Self::max_one(&nums1, size1);
            let max2 = Self::max_one(&nums2, size2);
            let max3 = Self::max_merge(max1, max2);
            if let Some(max) = max_merged {
                if max 
    
fn test() {
    let nums1 = vec![3, 4, 6, 5];
    let nums2 = vec![9, 1, 2, 5, 8, 3];
    let k = 5;
    let res = vec![9, 8, 6, 5, 3];
    assert_eq!(Solution::max_number(nums1, nums2, k), res);
    let nums1 = vec![6, 7];
    let nums2 = vec![6, 0, 4];
    let k = 5;
    let res = vec![6, 7, 6, 0, 4];
    assert_eq!(Solution::max_number(nums1, nums2, k), res);
    let nums1 = vec![3, 9];
    let nums2 = vec![8, 9];
    let k = 3;
    let res = vec![9, 8, 9];
    assert_eq!(Solution::max_number(nums1, nums2, k), res);
    let nums1 = vec![2, 5, 6, 4, 4, 0];
    let nums2 = vec![7, 3, 8, 0, 6, 5, 7, 6, 2];
    let k = 15;
    let res = vec![7, 3, 8, 2, 5, 6, 4, 4, 0, 6, 5, 7, 6, 2, 0];
    assert_eq!(Solution::max_number(nums1, nums2, k), res);
}