#![allow( clippy::incompatible_msrv, // https://github.com/rust-lang/rust-clippy/issues/12257 clippy::items_after_statements, clippy::uninlined_format_args, clippy::unused_async )] use cxx::{let_cxx_string, CxxString}; use std::fmt::Write as _; #[test] fn test_async_cxx_string() { async fn f() { let_cxx_string!(s = "..."); async fn g(_: &CxxString) {} g(&s).await; } // https://github.com/dtolnay/cxx/issues/693 fn assert_send(_: impl Send) {} assert_send(f()); } #[test] fn test_display() { let_cxx_string!(s = b"w\"x\'y\xF1\x80\xF1\x80z"); assert_eq!(format!("{}", s), "w\"x'y\u{fffd}\u{fffd}z"); } #[test] fn test_debug() { let_cxx_string!(s = b"w\"x\'y\xF1\x80z"); assert_eq!(format!("{:?}", s), r#""w\"x'y\xf1\x80z""#); } #[test] fn test_fmt_write() { let_cxx_string!(s = ""); let name = "world"; write!(s, "Hello, {name}!").unwrap(); assert_eq!(s.to_str(), Ok("Hello, world!")); } #[test] fn test_io_write() { let_cxx_string!(s = ""); let mut reader: &[u8] = b"Hello, world!"; std::io::copy(&mut reader, &mut s).unwrap(); assert_eq!(s.to_str(), Ok("Hello, world!")); }