小编yax*_*aks的帖子

使函数实例化其泛型参数

以下 Rust 中的 C++ 程序的等价物是什么?

#include <iostream>
#include <vector>

template <typename T>
T stuff() {
    return T();
}
int main() {
    std::vector<int> vec = stuff<std::vector<int>>();
    vec.push_back(1);
    for (auto &&i : vec) {
        std::cout << i << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

trait Newable{
    fn new() -> Self;
}
fn stuff<T: Newable>() -> T {
    T::new()
}
Run Code Online (Sandbox Code Playgroud)

我尝试为此使用新类型 -

struct NwVec<T>{
    vec: Vec<T>
}
impl<T> Newable<T> for NwVec<T>{
    fn new() -> Self {
        NwVec { vec: Vec::new() }
    }
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

fn …
Run Code Online (Sandbox Code Playgroud)

c++ generics templates rust

1
推荐指数
1
解决办法
113
查看次数

标签 统计

c++ ×1

generics ×1

rust ×1

templates ×1