当前位置: 首页 > 知识库问答 >
问题:

如何在泛型结构中定义常量闭包

卞博简
2023-03-14

我试图声明一个const闭包,以便在我的代码中使用:

    impl<T: Default + Copy + Eq> Profiler<T> {
    pub const increase_by_one: dyn Fn(&T) = &|x| {
        *x = *x + 1;
    };

但是我遇到了编译时不知道大小的问题。

我也试过:

impl<T: Default + Copy + Eq> Profiler<T> {
    pub const increase_by_one: fn(&T) = &|x| {
        *x = *x + 1;
    };

但它说必须知道x的类型。

定义一个泛型结构里面有一个泛型结构吗?

共有1个答案

连德水
2023-03-14

在Rust today中无法定义const闭包,因为闭包的类型无法命名。可以使用函数指针(fn(

幸运的是,const闭包从来都不是必需的。闭包和fn项之间的唯一区别是闭包可以有状态,但是consts可能没有状态,所以将它们结合起来没有任何意义。只需使用关联函数而不是关联常数。

impl<T: AddAssign<i32>> Profiler<T> {
    pub fn increase_by_one(x: &mut T) {
        *x += 1;
    }
}
  • 在Rust中,什么是'fn()-

 类似资料:
  • 问题内容: 假设您需要定义一个仅包含常量的类。 这样做的首选方式是什么? 接口 抽象类 最终班 我应该使用哪一个?为什么? 澄清一些答案: 枚举 -我将不使用枚举,我不会枚举任何东西,只是收集一些彼此不相关的常量。 接口 -我不会将任何类设置为实现该接口的类。只是想使用该接口来调用常量,例如:。 问题答案: 使用期末课程。为简单起见,您可以使用静态导入在另一个类中重用您的值 在另一堂课中:

  • 我有以下Java代码,我想将其转换为Kotlin: 我想出了以下代码: Android Studio正展示着一个红色的“对象”下方歪歪扭扭的行,上面写着: 此处不允许同伴对象 注意:我知道我可以将它转换为非内部类,但我更愿意保留它一个。我还检查了我不能在内部类中定义接口。

  • 本文向大家介绍C++中的常量定义小结,包括了C++中的常量定义小结的使用技巧和注意事项,需要的朋友参考一下 本篇笔记总结自一次代码检视。 一般来说,使用C语言编程时我们都习惯在代码当中使用C当中的宏定义来定义一个数值常量: 在C++开发项目时,也会经常存在沿袭C当中常量用法情况。所以,如下的一种写法看起来反倒觉得有些不正宗了: 站在编译器的角度,这两种写法都是合法的,但在使用的时候总得二中择一,究

  • 使用符合03标准的编译器(gcc-3.3.2的安全关键变体)。该标准规定必须定义静态成员对象(9.4.2(4))。它还规定“一个定义”规则适用,但不需要诊断(9.4.2(5))。以下代码有效吗? 也就是说,没有“静态常量int fred::JOE;”。我这样问是因为我们有一个例子(显然),模板类中的静态常量从未定义过,代码在某些上下文中工作,但在其他上下文中不工作。我用一个枚举替换了静态常量int

  • Rust 有两种常量,可以在任意作用域声明,包括全局作用域。这两种常量都要显式地标注: const: 不可改变的值(常用类型)。 static: 在 'static 生命周期内可能发生改变的变量。 有个特例就是 "string" 原始类型。可以给它直接赋一个不可改变的 static 变量,是因为它的 类型标记:&'static str 包含了生命周期 'static。其他的引用类型都必须特别注明从

  • 在laravel中,没有定义常量文件,所以我继续寻找一种实现常量使用的方法。下面的方法是我设法组合起来的: 现在,我的问题是;在我看来,有没有更干净的方法来检索我的常量?类似的东西: 这是为了保持我的观点好,短和干净。 感谢您的投入!