gpt4 book ai didi

rust - 取决于特征是否被实现的函数行为

转载 作者:行者123 更新时间:2023-11-29 08:28:06 25 4
gpt4 key购买 nike

给定这样的情况:

trait Basic {
// Some functions
}

trait Derived : Basic {
// some other functions
}

fn do_someting<T : Basic>(target: &mut T) {
// do stuff
}

do_something 函数是否可能根据 target 是否实现特征 Derived 而表现不同(信息在编译时间)?

我想在 C++ 中使用模板特化可以实现类似的东西,但我没有看到 Rust 的等价物。

最佳答案

据我所知,目前这是不可能的。定义 fn do_something<T : Derived>与您现有的功能一起导致编译错误:

error: duplicate definition of value `do_someting`

因为这两个版本都可以用于 Basic。

有一些建议允许显式边界,如 <T: Basic + !Derived>这将使您能够解决此冲突。

但我个人希望在 1.0 版本发布后的某一天 impl 重载/特化成为可能。

关于rust - 取决于特征是否被实现的函数行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25216446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com