小编Har*_*ock的帖子

在Rust中打印用空格分隔的迭代器的惯用方式是什么?

我只想要一个空格String,这些空格与从中获取的参数变量分开,该变量std::env::args()是我一直使用以下fold函数创建的:

std::env::args()
    .fold("".to_string(), |accum, s| accum + &s + " ")
Run Code Online (Sandbox Code Playgroud)

然而,这在末端处产生了多余的空间,这是不需要的。我尝试使用该truncate函数,但未truncate返回a String,仅修改了现存的String,并且这将需要创建一个中间绑定,以便使用Stringlen()调用来定义被截断的长度String(这本身将需要我相信,由于Rust的当前词汇借用规则,中间绑定必不可少!)

rust

8
推荐指数
2
解决办法
3068
查看次数

是否有一个与C++中的时钟函数相当的Rust?

我正在尝试测试我的代码部分的效率,而C++有一个clock功能ctime,允许使用该clock_t类型测量程序所消耗的处理器时间.是否有一些Rust等价物不仅仅是测量代码中两点之间的绝对时间?

libc rust

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

在Rust中有效地写入多个字节

我正在使用Rust中的原始指针,我正在尝试将一个内存区域从一个地方复制到另一个地方.我已成功复制内存,但只使用for循环并使用指针的偏移量单独复制每个字节.我无法弄清楚如何更有效地做到这一点,即作为一串字节的单个副本,任何人都能指出我正确的方向吗?

fn copy_block_memory<T>(src: *const T, dst: *mut u8) {
    let src = src as *const u8;
    let size = mem::size_of::<T>();
    unsafe {
        let bytes = slice::from_raw_parts(src, size);
        for i in 0..size as isize {
            ptr::write(dst.offset(i), bytes[i as usize]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

pointers unsafe rust

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

是否有更清晰的方法来表示取消引用原始指针并在Rust中应用它们的函数?

我正在使用Rust中的原始指针,我有几行很难读,因为我在Rust中找不到一个与->C++ 具有类似功能的运算符.有人存在吗?

这是我目前难以读取状态的代码片段:

(*(*block).next().unwrap()).split(ExcHeader(30));
Run Code Online (Sandbox Code Playgroud)

rust raw-pointer

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

在Haskell中展开函数类型

有没有办法在Haskell中解包以下类型?

newtype Rand a = Rand(StdGen -> (a , StdGen))
Run Code Online (Sandbox Code Playgroud)

我有一个函数返回这个类型和另一个我想使用返回函数的'a'值,但我无法弄清楚如何提取值.

haskell

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

do 语句中的 if/then/else (Haskell)

我编写的代码块无法编译,因为 if/then/else 块没有以编译器理解的方式设置,但是我不知道如何重写它,所以它可以。

playRandomly board = do
                 let vMoves = getValidMoves board board
                 if vMoves == [] then return [] else
                 rMove <- uniform vMoves
                 let Just nBoard = runMove board rMove
                 rest <- playRandomly nBoard
                 return (rMove : rest)
Run Code Online (Sandbox Code Playgroud)

基本上,如果列表为空,该函数uniform将除以零,因此我需要一种方法来捕获它并在继续执行 do 语句之前返回空列表。有什么建议吗?

monads haskell do-notation

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

使用std :: ptr :: set_memory时未解析的名称错误

我使用的是ptr::set_memory性病模块:

use std::ptr;

fn main() {
    let addr = 0 as *mut u8;
    unsafe { ptr::set_memory(addr, 0, 8); }
}
Run Code Online (Sandbox Code Playgroud)

但由于此错误,程序将无法编译:

src/main.rs:160:18: 160:33 error: unresolved name `ptr::set_memory` [E0425]
src/main.rs:160         unsafe { ptr::set_memory(p, 0, total_size); }
                                 ^~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

rust ×5

haskell ×2

do-notation ×1

libc ×1

monads ×1

pointers ×1

raw-pointer ×1

unsafe ×1