假设我有一个类型Foo
,我希望能够显示为一个字符串,通过实施ToString
执行Show
来执行此操作更具地道性吗?如果Show
是要走的路,我怎么会最终得到String
?我怀疑我需要利用write!
,但我不完全确定如何。将类型呈现为字符串:Show或ToString?
回答
更新:最近fmt::Show
特质已经被分成fmt::Debug
和fmt::Display
。这些性状都具有相同的结构,但它们的语义不同:fmt::Display
旨在手动实施,以便选择少量应向用户显示的类型,而fmt::Debug
预计将以全部类型以这种方式实现代表它们的内部结构最好(对于大多数类型,这意味着它们应该有#[derive(Debug)]
)。
ToString
特征现在适用于实施fmt::Display
的所有类型。为了获得fmt::Debug
输出的字符串表示,您需要使用format!("{:?}", value)
,其中{:?}
是实现fmt::Debug
的类型的占位符。
This RFC定义何时使用fmt::Debug
和fmt::Display
的指导原则。
由于历史原因,原来的答案在下面。
您不应该手动执行ToString
。它只是提供to_string()
方法的所有类型的扩展特征,其实现Show
,您可以看到它on its documentation page。如果您实施了Show
,则to_string()
将自动适用于您的类型。
#[derive(Show)]已弃用。寻找替代品... –
它是#[派生(调试)] –
@AndrewWagner,旧'显示'已被分为'显示'和'调试'。你可以在这里找到更多(https://github.com/rust-lang/rfcs/pull/565)。但是,谢谢,我现在就更新我的回答。 –
- 1. Django将字段呈现为字符串
- 2. 将带有PHP标签的字符串呈现为字符串
- 3. 类型为字符串或数字
- 4. 为什么字符串类型有一个.ToString()方法?
- 5. 将字符串转换为字符串的泛型类型
- 6. 将ActionResult呈现为字符串,将其作为ContentResult返回
- 7. pandas dataframe将列类型转换为字符串或分类
- 8. 如何使用React同步呈现组件(或呈现为字符串)
- 9. 将CLLocationCoordinate2D类型转换为数字或字符串
- 10. 转换阵列呈现为字符串
- 11. 呈现角度为字符串
- 12. MVC呈现双为空字符串
- 13. 在jtable中呈现字符串和日期数据类型
- 14. Knockout呈现html字符串
- 15. 不使用字符串实现Int64.ToString
- 16. 将LinqToExcel.RowNoHeader类型转换为字符串
- 17. 将MYSQL_ROW类型转换为字符串
- 18. 将字符串转换为'Date'类型
- 19. 将字符串转换为类型“LuaFunction”
- 20. 将字符串转换为类型UTCTime
- 21. 将字符串类型转换为int
- 22. 将字符串值转换为类型
- 23. jquery/backbone/mustache/json将html作为文本字符串呈现为
- 24. Express.js,Jade:呈现类型为
- 25. 作为字符串的HTML呈现模型
- 26. 将字符串类型日期更改为日期字符串
- 27. 无法将类型'字符串'隐式转换为'字符串'
- 28. 将字符串转换为字符串类型的片段
- 29. C宏将字符串转换为pascal字符串类型
- 30. 将IBAN字符串的类型更改为字符串
谁是这个字符串的听众?是为了程序员(你)的便利,还是向最终用户展示? – Shepmaster
@Shepmaster这将是最终用户。 – Ray