小编llo*_*giq的帖子

如何定义仅测试依赖项?

我有一个实现lint插件的Rust库.我想包括compiletest,但不要求在测试之外.指定依赖项仅用于测试的正确方法是什么?

rust rust-cargo

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

如何链接到rustdoc中的其他fns/structs/enums/traits?

我正在构建一个Rust库,并希望给它一些润色.在rustdoc中,我有时想在文档中链接到库的其他部分,例如fns,traits或structs.这是什么官方语法?

rust rustdoc

41
推荐指数
3
解决办法
4886
查看次数

握手失败 - 在Intellij中调试Solr时出现连接prematurally关闭错误

所以我打算在Intellij Community Edition上调试我的Solr过滤器插件.在我使用此命令从命令提示符运行程序后

java -jar start.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8983
Run Code Online (Sandbox Code Playgroud)

我用这个配置启动了我的Intellij调试器:

Transport : socket
Debugger mode : attach
Host : localhost
Port : 8983
Run Code Online (Sandbox Code Playgroud)

但是当我运行调试器时出现了这个错误:

Error running Debugger: Unable to open debugger port (localhost:8983): 
java.io.IOException "handshake failed - connection prematurally closed"
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

java debugging intellij-idea

25
推荐指数
3
解决办法
5万
查看次数

如何基准测试函数的内存使用情况?

我注意到Rust的测试有一个测量执行时间的基准模式ns/iter,但我找不到测量内存使用情况的方法.

我该如何实施这样的基准?让我们假设目前我只关心堆内存(虽然堆栈使用也肯定会很有趣).

编辑:我发现这个问题要求完全相同的事情.

memory benchmarking rust

18
推荐指数
4
解决办法
4031
查看次数

未解析的名称rand :: thread_rng

我想用一些随机数作为基准:

#![feature(test)]

/// benchmarks for different map implementation
extern crate test;
extern crate rand;

use test::Bencher;
use rand::Rng;

#[bench]
fn setup_random_hashmap(b: &mut Bencher) {
    let mut val : u32 = 0;
    let mut rng = rand::thread_rng();
    let mut map = std::collections::HashMap::new();

    b.iter(|| { map.insert(rng.gen::<u32>(), val); val += 1; })
}
Run Code Online (Sandbox Code Playgroud)

但是,rustc回来了:

bench.rs:14:16: 14:32 error: unresolved name `rand::thread_rng`
bench.rs:14     let mut rng = rand::thread_rng();
Run Code Online (Sandbox Code Playgroud)

thread_rng定义rand为a pub fn.我错过了什么声明?我在用1.2.0-nightly (8f9f2fe97 2015-06-07).

rust

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

如何使用fernflower使用正确的行号进行反编译?

我正在使用Intellij Idea 14大型java项目,其中编译了大量代码并且没有源代码.

据我所知Idea,无法在编译代码中进行搜索(如同eclipse),但它可以使用内置程序对单个文件进行反编译fernflower,这也可以通过编译代码进行调试.

有没有办法像Idea那样以同样的方式反编译所有已编译的代码并将其附加到项目中,这样就可以搜索"Project and Libs"而无需在反编译源中丢失调试功能?

我尝试使用Bytecodeviewer不同的fernflower选项,但结果是在附加反编译源后调试被破坏(显示错误的行).

java decompiling intellij-idea

12
推荐指数
2
解决办法
3447
查看次数

mem :: forget(mem :: uninitialized())定义的行为是什么?

mutagen中,我在代码中注入了各种突变.我想改变的一件事是模式 if let Ok(x) = y { .. }.然而,这构成了相当大的挑战,因为我无法知道其类型y- 用户可以使用一元Ok变体构建自己的枚举.我仍然可以机会性地改变它,因为我们实际上有一个Result错误类型实现的情况Default使用类似于以下简化的特征:

#![feature(specialization)]

pub trait Errorer {
    fn err(self, mutate: bool) -> Self;
}

impl<X> Errorer for X {
    default fn err(self, _mutate: bool) -> Self {
        self
    }
}

impl<T, E> Errorer for Result<T, E>
where
    E: Default,
{
    fn err(self, mutate: bool) -> Self {
        if mutate {
            Err(Default::default())
        } else {
            self
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

唉,实现的错误并不多Default,所以这不太有用.即使是实现 …

unsafe undefined-behavior rust

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

为什么 LLVM 似乎忽略了 Rust 的内在假设?

LLVM 似乎忽略core::intrinsics::assume(..)调用。它们最终会出现在字节码中,但不会更改生成的机器码。例如,采用以下(无意义的)代码:

pub fn one(xs: &mut Vec<i32>) {
    if let Some(x) = xs.pop() {
        xs.push(x);
    }
}
Run Code Online (Sandbox Code Playgroud)

这编译成一大堆程序集:

example::one:
        push    rbp
        push    r15
        push    r14
        push    r12
        push    rbx
        mov     rbx, qword ptr [rdi + 16]
        test    rbx, rbx
        je      .LBB0_9
        mov     r14, rdi
        lea     rsi, [rbx - 1]
        mov     qword ptr [rdi + 16], rsi
        mov     rdi, qword ptr [rdi]
        mov     ebp, dword ptr [rdi + 4*rbx - 4]
        cmp     rsi, qword ptr [r14 + 8]
        jne …
Run Code Online (Sandbox Code Playgroud)

performance llvm rust llvm-codegen

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

为什么将`ptr :: write`与MaybeUninit`s的数组一起使用?

在标准库中,文档显示了如何实例化MaybeUninits的数组 :

let arr: [MaybeUninit<T>; N] =
    MaybeUninit::uninit().assume_init();
Run Code Online (Sandbox Code Playgroud)

我们知道这是安全的,因为的合同MaybeUninit允许使用未初始化的值。接下来,我们被要求ptr::write(value)用来初始化每个元素。但这unsafe又需要代码。我们还知道覆盖a MaybeUninit是安全的,因为它没有drop任何作用。那么,为什么不覆盖它arr[i] = MaybeUninit::new(value)呢?

initialization rust

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

为什么`str`是原始类型?

查看文档和代码,它看起来str是一个原始类型,String而是一个struct { Vec<u8> }.现在,作为str是一个[u8]什么String是一个Vec<u8>,不能str被定义为

struct str { slice: [u8]; }
Run Code Online (Sandbox Code Playgroud)

类似于AsciiStr的定义方式?为什么/它(仍然?)被定义为原始的?

internals rust

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