如何将Tendril<UTF8>转换为&str或String?(HTML5ever场景)
把HTML5ever的Tendril转换为String的方法
嘿,这个问题我之前刚解决过!其实Tendril
下面是两种最常用的方法:
方法1:直接调用to_string()
TendrilToString trait,所以可以直接调用to_string()方法得到String。结合你要收集属性到Vec<(String, String)>的需求,代码大概是这样的:
use html5ever::{Attribute, tendril::Tendril}; use markup5ever::QualName; fn collect_attributes(attrs: &[Attribute]) -> Vec<(String, String)> { attrs.iter() .map(|attr| { // 把属性名(QualName的local部分)转成String let attr_name = attr.name.local.to_string(); // 把Tendril<UTF8>类型的属性值直接转成String let attr_value = attr.value.to_string(); (attr_name, attr_value) }) .collect() }
方法2:先转成&str再处理
如果你只是临时需要一个字符串切片,或者想更灵活地控制分配,可以先用as_str()方法得到&str,之后再根据需要转成String:
// 从Attribute里取出Tendril<UTF8>类型的值 let tendril_value: &Tendril<UTF8> = &attr.value; // 转成&str let str_value: &str = tendril_value.as_str(); // 如果需要String的话再转换 let string_value: String = str_value.to_string();
另外要提一句:Tendril
内容的提问来源于stack exchange,提问作者thatlittlegit
相关产品推荐
相关产品推荐

