MST
星途 面试题库

面试题:Rust中泛型函数的参数约束

在Rust中,定义一个泛型函数 `print_type`,该函数接受一个泛型参数 `T` 并打印出其类型。但要求 `T` 必须实现 `std::fmt::Debug` 特征,描述如何实现这个函数以及为什么需要这个特征约束。
45.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::fmt::Debug;

fn print_type<T: Debug>(value: &T) {
    println!("Type: {:?}", std::any::type_name::<T>());
}

之所以需要 T 实现 std::fmt::Debug 特征,是因为在 println! 宏中,{:?} 格式化占位符用于调试输出,需要类型实现 Debug 特征才能将其以调试格式输出。如果类型没有实现 Debug 特征,编译时会报错,确保只有支持调试输出格式的类型才能传递给这个函数,使得函数的行为是可预期和安全的。