小编ide*_*n42的帖子

存储闭包以供重用的惯用方法?

在 Rust 中传递闭包非常简单,但是在存储闭包以供重用时,有多种解决方案(使用通用函数类型、引用闭包或盒子、盒子是否有'static生命周期?...)。

虽然我使用不同类型的盒装类型多次对此感到困惑,但阅读类似的问答,甚至可能在回答这个问题时冒险猜测。我不知道如何处理这个问题,即使是简单/明显的情况,或者一个好的起点是什么。

为了使问题更具体,什么是使此示例存储函数以供重用的好方法,使用构建器模式存储稍后调用的闭包。

// This example looks a bit long but its really very simple.

// * This example is most of the way to implementing the builder pattern,
//   it ust runs the code immediately instead of storing input
//   to run on `build()`.
// * Changes should only be needed where the comment `stored closures:`
//   has been written.
// * I've attempted to make this example as generic as possible,
//   but not …
Run Code Online (Sandbox Code Playgroud)

closures lifetime rust

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

可以访问结构成员的'TypeId'吗?

有没有办法按名称访问struct成员的TypeId(std::any::TypeId::of::<T>)?

如果我有一个基本结构:

MyStruct {
    value: i64,
}
Run Code Online (Sandbox Code Playgroud)

而且我只知道MyStruct并且value,有没有办法访问TypeId::of::<i64>- 哪里i64取决于类型value

main () {
    assert_eq!(
        TypeId::of::<i64>,
        // ^^^ this works
        type_id_of!(MyStruct, value),
        // ^^^ this is what I'm looking for
    );
}
Run Code Online (Sandbox Code Playgroud)

请参阅相关问题:是否可以访问函数签名或声明的结构成员类型?

types introspection rust

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

如何使用基于整数的缩进格式化字符串?

除了执行以下操作之外,还有更好的方法来打印/格式化字符串缩进:

let text_to_indent = "Indented text!";
for i in 0..indent {
    print!(" ");
}
println!("{}", text_to_indent);
Run Code Online (Sandbox Code Playgroud)

Rust有更方便的方法吗?

string-formatting rust

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

是将字节转换为浮动安全还是可能产生未定义的行为?

是否存在字节序列,当转换为f32或者f64在Rust中产生未定义的行为时?我将非有限值(例如NaN,Infinity等)计为有效浮点值.

对此答案的评论暗示可能存在从原始字节转换浮点数的问题.

floating-point undefined-behavior rust

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

以便携式方式查找shell脚本中的处理器/ CPU数量?

因为编写将脚本数量传递给命令的shell脚本很常见,所以我很想知道在主流*Unix系统上获得处理器数量的好方法是什么.

事情是这样,但不依赖于Python的.


*通过主流,我的意思是,它将适用于今天生产中使用的流行的Unix系统(Linux/BSD/Darwin?但是越便携越好).

unix shell sh

3
推荐指数
2
解决办法
815
查看次数

内存竞技场和内存池有什么区别?

我已经看到用于内存分配器的包装器的两个术语,它们之间有什么区别?(如果有的话)

c malloc memory-management allocation

3
推荐指数
2
解决办法
1805
查看次数

在C中搜索已排序的数组

我正在研究C中的一个问题,我对它有一个快速的问题.问题如下:比如说,我给出了一些排序的整数数组a[i] = { 1, 2, 3, 3, 3 }.现在,我应该运行一个搜索给定整数的程序,返回第一次出现的位置以及该数组中该整数的出现次数.

所以,如果我正在搜索3那么我会第一次出现,a[2]并且有三次出现3.对于第一个发现第一次出现的部分,我可以简单地使用strcspn字符串头文件.但是,对于第二部分,是否有一个内置函数可以计算特定整数的实例数?

通过简单地增加一个计数器变量,我实际上可以用我的"赤手空拳"做到这一点.但是,我的教授给了我一个提示,返回类型应该是size_t,这表明可以使用一些内置函数.任何帮助,将不胜感激.

谢谢,亚历山大

c

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

C/C++中函数的数组太小的警告

是否有任何工具(最好在Linux上)可以在参数定义为较小的数组时发出警告,然后原型指定?

例如:

void somefunc(float arg[10]);  /* normally this would be defined in a header */

void my_func(void)
{
    float arg[2];
    somefunc(arg);  /* <-- this could be a warning */
}
Run Code Online (Sandbox Code Playgroud)

我意识到这不是无效的代码,但它可以解决一些常见的错误,如果它可以警告它(最近碰到其中一个错误).

一些工具(例如clang静态检查器)会在函数位于同一个文件中并在数组边界外设置一个值时发出警告,但我想知道如果arg比原型单独小,是否有任何事情会发出警告.

我用过cppcheck,clang,smatch,splint,gcc's -Wextra ......但没有人抱怨这个.

c c++ arrays buffer-overrun

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

间接预处理器替换C.

有没有一种方法可以使用传递给它的定义值,而不是定义文本本身?

这是一个奇怪的例子,我预计可以使用预处理器.

一个被调用的C文件test.c,其中包含两次自定义两个不同的函数main.

#ifndef IS_INDIRECT
#define IS_INDIRECT

/* int */
#define NUMTYPE int
#define PREFIX int_

#include "test.c"

#undef NUMTYPE
#undef PREFIX

/* short */
#define NUMTYPE float
#define PREFIX float_

#include "test.c"

#undef NUMTYPE
#undef PREFIX

#include <stdio.h>

int main(int argc, const char **argv)
{
    printf("test int %d\n", int_squared(4));
    printf("test float %f\n", float_squared(2.5));

    return 0;
}

#else

/* function body */

#define fn(prefix, id) prefix ## id

NUMTYPE fn(PREFIX, squared)(NUMTYPE val)
{
    return …
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor

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

什么是最简单的链式比较方法,产生第一个不相等的方法?

对于具有可以比较的多个成员的结构或者sort_by回调,将数据与优先级进行比较是很常见的.

// Example of sorting a: Vec<[f64; 2]>, sort first by y, then x,
xy_coords.sort_by(
    |co_a, co_b| {
        let ord = co_a[1].cmp(&co_b[1]);
        if ord != std::cmp::Ordering::Equal {
            ord
        } else {
            co_a[0].cmp(&co_b[0])
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

是否有更简单的方法来执行多个cmp函数,其中只返回第一个不相等的结果?

syntax comparison rust

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