1*c8dee2aaSAndroid Build Coastguard Worker use cxx; 2*c8dee2aaSAndroid Build Coastguard Worker #[cxx::bridge(namespace = "hype_train")] 3*c8dee2aaSAndroid Build Coastguard Worker mod ffi { 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Worker pub struct HypeOutput { 6*c8dee2aaSAndroid Build Coastguard Worker output: String, 7*c8dee2aaSAndroid Build Coastguard Worker new_len: usize, 8*c8dee2aaSAndroid Build Coastguard Worker } 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker extern "Rust" { hypeify(input: String, num_exclamations: i32) -> HypeOutput11*c8dee2aaSAndroid Build Coastguard Worker fn hypeify(input: String, num_exclamations: i32) -> HypeOutput; 12*c8dee2aaSAndroid Build Coastguard Worker } 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker } 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker use crate::ffi::HypeOutput; 17*c8dee2aaSAndroid Build Coastguard Worker hypeify(input: String, num_exclamations: i32) -> HypeOutput18*c8dee2aaSAndroid Build Coastguard Workerpub fn hypeify(input: String, num_exclamations: i32) -> HypeOutput { 19*c8dee2aaSAndroid Build Coastguard Worker let mut res = input.to_uppercase(); 20*c8dee2aaSAndroid Build Coastguard Worker for _ in 0..num_exclamations { 21*c8dee2aaSAndroid Build Coastguard Worker res += "!" 22*c8dee2aaSAndroid Build Coastguard Worker } 23*c8dee2aaSAndroid Build Coastguard Worker return HypeOutput{ 24*c8dee2aaSAndroid Build Coastguard Worker new_len: res.len(), output: res, 25*c8dee2aaSAndroid Build Coastguard Worker } 26*c8dee2aaSAndroid Build Coastguard Worker 27*c8dee2aaSAndroid Build Coastguard Worker }