【问题标题】:The type placeholder `_` is not allowed within types on item signatures项目签名上的类型中不允许使用类型占位符“_”
【发布时间】:2015-10-23 07:24:48
【问题描述】:

初学者问题;并且搜索找不到类似的东西。

背景:我只是通过制作一个改组函数来练习 Rust 中的函数。程序接受任何参数并打乱它们并将它们存储在'result'中

问题:我想我不能在函数头中使用V<_>,那么在这种情况下我应该使用什么?

MCVE:

use std::io;
use std::cmp::Ordering;
use std::env;

fn main()
{
    let mut result = shuffle(env::args().collect());
}//End of main

fn shuffle(args: Vec<_>) -> Vec<_>
{ 
    let mut temp = Vec::with_capacity((args.capacity()));
    while args.len() > 1 
    {
        //LET N REPRESENT A RANDOM NUMBER GENERATED ON EACH ITERATION
        let mut n = 2;
        temp.push(args.swap_remove(n));
    }
    return temp;
}//End of shuffle function

Playground link

【问题讨论】:

    标签: vector rust placeholder


    【解决方案1】:

    您可以将您的函数转换为通用函数:

    fn shuffle<T>(args: Vec<T>) -> Vec<T> {
    

    在围栏里看到它:http://is.gd/MCCxal

    【讨论】:

    • 哦,好的,谢谢!我尝试用 T 替换 _ 但我没有意识到我还需要在函数名称后添加 。什么情况下需要把类型放在函数名后面?
    • 如果您没有具体类型,例如i32A,其中A 是您定义的结构,则始终需要它。如果函数是一个方法,你也可以对类型使用泛型参数。
    猜你喜欢
    • 2019-12-16
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多