我正在尝试创建一个通用函数,将字节切片转换为整数。
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) 我正在做一个练习代码练习,其中您必须并行计算一段字符串中的字符。该代码附带了一些基准来比较并行与顺序性能。
\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)