Rust Trie solution
rust\n#[derive(Default)]\nstruct Trie {\n    children: [Option<Box<Trie>>; 2],\n}\n\nimpl Solution {\n    pub fn find_maximum_xor(nums: Vec<i32>) -> i32 {\n    
```rust\n#[derive(Default)]\nstruct Trie {\n    children: [Option<Box<Trie>>; 2],\n}\n\nimpl Solution {\n    pub fn find_maximum_xor(nums: Vec<i32>) -> i32 {\n        let mut trie: Trie = Default::default();\n        for &num in nums.iter() {\n            let mut node = &mut trie;\n            for i in (0..31).rev() {\n                let bit = ((num >> i) & 1) as usize;\n                node = node.children[bit].get_or_insert_with(Default::default);\n            }\n        }\n        let mut answer = 0;\n        for &num in nums.iter() {\n            let mut max = 0;\n            let mut node = &trie;\n            for i in (0..31).rev() {\n                let bit = ((num >> i) & 1) as usize;\n                if let Some(n) = &node.children[1 - bit] {\n                    max |= 1 << i;\n                    node = n;\n                } else {\n                    node = &node.children[bit].as_ref().unwrap();\n                }\n            }\n            answer = std::cmp::max(answer, max);\n        }\n        answer\n    }\n}\n```
['Trie', 'Rust']