编者按:这个代码示例来自Rust 1.0之前的版本,不是有效的Rust 1.0代码,但答案仍然包含有价值的信息.
我想将字符串文本传递给Windows API.许多Windows函数使用UTF-16作为字符串编码,而Rust的原生字符串是UTF-8.
我知道Rust需要utf16_units()才能生成UTF-16字符迭代器,但我不知道如何使用该函数生成最后一个字符为零的UTF-16字符串.
我是这样制作UTF-16字符串的,但我相信有更好的方法来制作它:
extern "system" {
pub fn MessageBoxW(hWnd: int, lpText: *const u16, lpCaption: *const u16, uType: uint) -> int;
}
pub fn main() {
let s1 = [
'H' as u16, 'e' as u16, 'l' as u16, 'l' as u16, 'o' as u16, 0 as u16,
];
unsafe {
MessageBoxW(0, s1.as_ptr(), 0 as *const u16, 0);
}
}