rust - 为什么会出现这个错误?我们不能在函数括号内使用格式宏吗?
问题描述
代码:
fltk::frame::Frame::new(0,0, 300, 100, format!("side item {}", i));
输出错误:
the trait `std::convert::From<std::string::String>` is not implemented for `std::option::Option<&'static str>`
解决方案
format!()
产生一个String
,而Frame::new期望一个(可选的)&'static str
,即一个字符串切片,在程序的整个生命周期中都是有效的。
这几乎意味着您只能使用字符串文字。所以不,你不能直接使用format!()
. 似乎 FLTK 不打算以这种方式使用动态分配的字符串。
有一个技巧可以解决这个问题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);
推荐阅读
- jquery - jQuery DataTables 添加动态列
- python - 如何自定义带有复数的 DataFrame 的显示格式?
- php - Wordpress cronjob 无法正常工作
- node.js - Using Express-Handlebars, how can I set an Item to active from my Navigation Bar?
- javascript - 如何自动将元素聚焦在滚动上?
- assembly - rax/rdi 不会延续到下一个系统调用?
- typescript - 组内的导入源必须按字母顺序排列
- tensorflow - Django 开发服务器中的 TensorFlow 预测问题(带线程)
- asterisk - VtigerAsteriskConnector,传入 AGI 失败“文件过早结束”
- python - 在熊猫数据框中搜索不需要的值