小编Le *_*rin的帖子

无法创建将字节切片转换为整数的通用函数,因为大小在编译时未知

我正在尝试创建一个通用函数,将字节切片转换为整数。

fn i_from_slice<T>(slice: &[u8]) -> Option<T>
where
    T: Sized,
{
    match slice.len() {
        std::mem::size_of::<T>() => {
            let mut buf = [0; std::mem::size_of::<T>()];
            buf.copy_from_slice(slice);
            Some(unsafe { std::mem::transmute_copy(&buf) })
        }
        _ => None,
    }
}
Run Code Online (Sandbox Code Playgroud)

Rust 不会让我这样做:

error[E0532]: expected tuple struct/variant, found function `std::mem::size_of`
 --> src/lib.rs:6:9
  |
6 |         std::mem::size_of::<T>() => {
  |         ^^^^^^^^^^^^^^^^^^^^^^ not a tuple struct/variant

error[E0277]: the size for values of type `T` cannot be known at compilation time
 --> src/lib.rs:7:31
  |
7 |             let mut buf = [0; …
Run Code Online (Sandbox Code Playgroud)

rust

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

如何改善 vanilla rust 中并行代码的低性能?

我正在做一个练习代码练习,其中您必须并行计算一段字符串中的字符。该代码附带了一些基准来比较并行与顺序性能。

\n\n

我添加了一个不使用任何线程库(横梁、人造丝等)的约束,只是香草锈。

\n\n

到目前为止我已经想出了这个:

\n\n
#![feature(test)]\nextern crate test;\n\npub mod parallel_letter_frequency {\n    use std::collections::HashMap;\n    use std::thread;\n\n    const MIN_CHUNCK_SIZE: usize = 15;\n\n    pub fn string_len<T: AsRef<str>>(strings: &[T]) -> HashMap<char, usize> {\n        let mut dic = HashMap::new();\n        for string in strings {\n            for c in string\n                .as_ref()\n                .to_lowercase()\n                .chars()\n                .filter(|c| c.is_alphabetic())\n            {\n                *dic.entry(c).or_insert(0) += 1;\n            }\n        }\n        dic\n    }\n\n    pub fn frequency(input: &[&str], worker_count: usize) -> HashMap<char, usize> {\n        let chunk_size = input.len() / worker_count;\n\n        match (worker_count, chunk_size) {\n            (w, c) if …
Run Code Online (Sandbox Code Playgroud)

parallel-processing multithreading rust

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

标签 统计

rust ×2

multithreading ×1

parallel-processing ×1