面试题答案
一键面试// 引入序列化相关的库
use serde::{Serialize, Deserialize};
// 定义泛型结构体
struct DataStore<T> {
data: T,
}
// 为DataStore实现默认行为
impl<T> DataStore<T> {
fn new(data: T) -> Self {
DataStore { data }
}
}
// 当T实现Serialize特征时,为DataStore<T>实现序列化功能
impl<T: Serialize> DataStore<T> {
fn serialize(&self) -> Result<String, serde_json::Error> {
serde_json::to_string(&self.data)
}
}
以上代码是用Rust语言实现的,定义了一个泛型结构体DataStore
。当泛型参数T
实现了Serialize
特征时,DataStore<T>
会有一个serialize
方法用于序列化数据。如果T
没有实现Serialize
特征,就不会有这个序列化相关的方法,即跳过了序列化功能。实际使用时,若要使用Serialize
相关功能,需确保引入了serde
及其相关依赖。