/// A wrapper over UTF16 string constants. pub struct UTF16Const(pub &'static [u16]); impl UTF16Const { #[inline] pub fn as_ptr(&self) -> *const u16 { self.0.as_ptr() } #[inline] pub fn as_mut_ptr(&self) -> *mut u16 { self.0.as_ptr() as *mut u16 } #[inline] pub fn len(&self) -> usize { self.0.len() - 1 } } impl AsRef<[u16]> for UTF16Const { #[inline] fn as_ref(&self) -> &[u16] { &self.0[..self.len()] } } impl Copy for UTF16Const {} impl Clone for UTF16Const { #[inline] fn clone(&self) -> UTF16Const { *self } } /// A wrapper over UTF8 string constants. pub struct UTF8Const(pub &'static str); impl UTF8Const { #[inline] pub fn as_ptr(&self) -> *const i8 { self.0.as_ptr() as *const i8 } #[inline] pub fn as_mut_ptr(&self) -> *mut i8 { self.0.as_ptr() as *mut i8 } #[inline] pub fn len(&self) -> usize { self.0.len() - 1 } #[inline] pub fn as_str(&self) -> &str { &self.0[..self.len()] } } impl AsRef for UTF8Const { #[inline] fn as_ref(&self) -> &str { &self.0[..self.len()] } } impl Copy for UTF8Const {} impl Clone for UTF8Const { #[inline] fn clone(&self) -> UTF8Const { *self } }