San*_*mas -1 fltk rust rust-cargo
代码:
fltk::frame::Frame::new(0,0, 300, 100, format!("side item {}", i));
Run Code Online (Sandbox Code Playgroud)
输出错误:
the trait `std::convert::From<std::string::String>` is not implemented for `std::option::Option<&'static str>`
Run Code Online (Sandbox Code Playgroud)
format!()产生 a String,而Frame::new需要一个(可选)&'static str,即一个字符串切片,它将在程序的整个生命周期内都存在。
这几乎意味着您只能使用字符串文字。所以不,你不能直接使用format!(). 似乎 FLTK 不打算以这种方式使用动态分配的字符串。
有一个 hack 可以使用Box::leak. 但请注意,它会按照它在罐头上所说的做 - 它会泄漏内存,除非您Box::from_raw()在小部件销毁后通过回收它。
let leaked_title = &*Box::leak(format!("abc {}", 1).into_boxed_str())
fltk::frame::Frame::new(0,0, 300, 100, leaked_title);
Run Code Online (Sandbox Code Playgroud)