小编Con*_*ine的帖子

在Rust中检测平台

如何使用Rust检测操作系统类型?我需要指定一个特定于操作系统的默认路径.应该使用条件编译吗?

例如:

#[cfg(target_os = "macos")]
static DEFAULT_PATH: &str = "path2";
#[cfg(target_os = "linux")]
static DEFAULT_PATH: &str = "path0";
#[cfg(target_os = "windows")]
static DEFAULT_PATH: &str = "path1";
Run Code Online (Sandbox Code Playgroud)

cross-platform path rust

9
推荐指数
3
解决办法
2790
查看次数

Java中的4字节unicode字符

我正在为我的自定义StringDatatype编写单元测试,我需要写下4字节的unicode字符."\ U" - 不工作(非法转义字符错误)例如:U + 1F701(0xf0 0x9f 0x9c 0x81).如何用字符串写?

java unicode

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

regexp在字符类中指定计数器

我正在尝试创建regexp以查找重复的逗号,如下所示:

baz(uint32,,bool)
Run Code Online (Sandbox Code Playgroud)

现在我的模式是: \w*\([\w\[\],?+]+\)

这是行不通的.

如何指定字符类中项目的数量?

java regex

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

将一个源数组拆分为几个副本的正确方法是什么?

像这样的东西:

let source = [0u8; 40];
let a = source[0..11];
let b = source[11..40];
Run Code Online (Sandbox Code Playgroud)

arrays split rust

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

断言某些参数化向量会在JUnit中抛出异常?

我想知道如何为特定的异常断言编写测试?

例如(我的测试数据容器):

@Parameters(name = "{index}: {0} > {1} > {2} > {3} > {4}")
public static Iterable<Object[]> data() {
  return Arrays.asList(new Object[][] {
    {"1200", new byte[] {0x4B0}, "1200", 16, 2},
    {"10", new byte[] {0x0A}, "10", 8, 1},
    {"13544k0", new byte[] {0x0A}, "1200", 8, 1},  <== assert thrown exception
    {"132111115516", new byte[] {0x0A}, "1200", 8, 1},<== assert thrown exception
  });
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用这样的容器数据来断言异常,或者我需要在具体的测试方法中建模情况?

java junit unit-testing exception parameterized

4
推荐指数
2
解决办法
1704
查看次数

重定向从 Rust 产生的子进程的输出

我需要重定向生成的子进程的输出。这是我尝试过但不起作用的方法:

Command::new(cmd)
    .args(&["--testnet",
            "--fast",
            format!("&>> {}", log_path).as_str()])
    .stdin(Stdio::piped())
    .stdout(Stdio::inherit())
    .spawn()
Run Code Online (Sandbox Code Playgroud)

io process rust

4
推荐指数
3
解决办法
1651
查看次数

ByteBuffer 切换字节序

我正在尝试切换ByteBuffer 的字节序,但没有任何影响。做错了什么?也许我的调试主要功能不正确?

@Override
public byte[] toBytes(BigDecimal type) {
    int octets = getOctetsNumber();
    BigInteger intVal = type.unscaledValue();

    byte[] temp = intVal.toByteArray();
    int addCount = octets - temp.length;

    //        DEBUG
    ByteBuffer buffer = ByteBuffer.allocate(octets);
    for(byte b: intVal.toByteArray()){
        buffer.put(b);
    }
    if (addCount > 0){
        for (; addCount > 0; addCount--) {
            buffer.put((byte)0x00);
        }
    }
    buffer.flip();

    buffer.order( ByteOrder.BIG_ENDIAN);

    return buffer.array();
}

public static void main(String[] arg) {
    IntegerDatatype intVal = new IntegerDatatype(17);
    BigDecimal bd = new BigDecimal(32000);

    byte[] bytes = intVal.toBytes(bd); …
Run Code Online (Sandbox Code Playgroud)

java endianness

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

为集成测试和基准测试提供共享实用程序功能的惯用方法是什么?

我有Rust项目,包括集成测试(在/testsdir中)和基准测试(在/benchesdir中).在测试和长凳中我需要一些实用功能,但它们与我的箱子本身无关,所以我不能把它们放在/utils目录中.

处理这种情况的惯用方法是什么?

testing benchmarking rust rust-cargo

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

Rust 无法将绑定链接到 C 库

我按照rust-bindgen教程为scrypt C 库进行绑定。由于链接错误,我无法运行测试:

/home/user/project/rust-scrypt/src/lib.rs:32: undefined reference to `crypto_scrypt'
      collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

和我的测试:

include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
// ...
// ...
#[test]
fn test_script() {
  let mut kdf_salt = to_bytes("fd4acb81182a2c8fa959d180967b374277f2ccf2f7f401cb08d042cc785464b4");
    let passwd = "1234567890";
    let mut buf = [0u8; 32];

    unsafe {
        crypto_scrypt(passwd.as_ptr(), passwd.len(), kdf_salt.as_mut_ptr(), kdf_salt.len(),
                      2, 8, 1, buf.as_mut_ptr(), 32);
    }

    println!(">> DEBUG: {:?}", buf);
    // "52a5dacfcf80e5111d2c7fbed177113a1b48a882b066a017f2c856086680fac7");
}
Run Code Online (Sandbox Code Playgroud)

绑定已生成并存在于bindings.rs. 我不知道为什么链接器会抛出错误。

这是我的builds.rs

extern crate bindgen;

use std::env;
use std::path::PathBuf;

fn main() { …
Run Code Online (Sandbox Code Playgroud)

linker ffi rust

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

从较小的字节数组(Java)转换为long

我试图将一个字节数组转换为long,但接收BufferUnderflowException

    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    byte[] arg1 = new byte[] {0x04, (byte)0xB0};
    buffer.put(arg1, 0, arg1.length);
    buffer.flip();
    long val = buffer.getLong();
Run Code Online (Sandbox Code Playgroud)

在调试模式下,我查看了缓冲区内部.它有一个内部字节数组,它用"0"填充未指定的字节.那为什么会发生异常?我该如何解决?

java

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