rust-qt-binding-generator/tests/rust_functions/src/implementation.rs

54 lines
1.4 KiB
Rust

#![allow(unused_imports)]
#![allow(unused_variables)]
#![allow(dead_code)]
use interface::*;
pub struct Person {
emit: PersonEmitter,
user_name: String,
}
impl PersonTrait for Person {
fn new(emit: PersonEmitter) -> Person {
Person {
emit: emit,
user_name: String::new(),
}
}
fn emit(&self) -> &PersonEmitter {
&self.emit
}
fn user_name(&self) -> &str {
&self.user_name
}
fn set_user_name(&mut self, value: String) {
self.user_name = value;
self.emit.user_name_changed();
}
fn double_name(&mut self) {
self.user_name = format!("{}{}", self.user_name, self.user_name);
}
fn greet(&self, name: String) -> String {
format!("Hello {}, my name is {}, how is it going?", name, self.user_name)
}
fn vowels_in_name(&self) -> u8 {
self.user_name.chars().fold(0, |count, ch| match ch {
'a'|'e'|'i'|'o'|'u' => count + 1,
_ => count
})
}
fn quote(&self, prefix: String, suffix: String) -> String {
format!("{}{}{}", prefix, self.user_name, suffix)
}
fn quote_bytes(&self, prefix: &[u8], suffix: &[u8]) -> String {
let prefix = String::from_utf8_lossy(prefix);
let suffix = String::from_utf8_lossy(suffix);
format!("{}{}{}", prefix, self.user_name, suffix)
}
}