generics - 在通用结构实现中将文字转换为关联类型

标签 generics rust type-conversion associated-types

<分区>

假设关联类型具有适当的特征边界,我如何将 0.0 或任何其他数字转换为 Iterator 中的关联 Item 类型?以下代码描述了我的尝试。

use num::Float;
use std::iter::Iterator;

pub struct Signal<S>
    where S: Iterator, S::Item: Float
{
    signal: S,
    val: S::Item,
}

impl<S> Signal<S>
    where S: Iterator, S::Item: Float
{
    pub fn new(signal: S) -> Self {
        Signal {
            signal: signal,
            val: S::Item::from(0.0),
        }
    }
}

我目前收到错误:期望关联类型,找到浮点变量

最佳答案

NumCast::from似乎是最好的搭配。我建议不要导入它,因为方法名称与广泛使用的 From::from 冲突。

use num::Float;
use std::iter::Iterator;

pub struct Signal<S>
    where S: Iterator, S::Item: Float
{
    signal: S,
    val: S::Item,
}

impl<S> Signal<S>
    where S: Iterator, S::Item: Float
{
    pub fn new(signal: S) -> Self {
        Signal {
            signal: signal,
            val: num::NumCast::from(0.0).unwrap(),
        }
    }
}

关于generics - 在通用结构实现中将文字转换为关联类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54048500/

相关文章:

java - 如何从不同的注释执行具有相同名称的方法

casting - 我是否过多地转换了整数类型?

type-conversion - 将LESS中的rgba颜色定义字符串转换为颜色实例

sql-server - SQL 将列数据类型从 nvarchar 更改为 int

c# - 我的通用类型转换器味道不好,运行时异常,对象包罗万象,拳击等

c# - 如何使用 Automapper 将更改映射到现有集合?

typescript - 对象只能从 json 解析

file - 在 Rust 中迭代文件字节的更快方法是什么?

swift - withUnsafeBytes + 通用类型行为

rust - 在循环内访问向量的元素时遇到麻烦