rust

What is the correct way to read a binary file in chunks of a fixed size and store all of those chunks into a Vec?

微笑、不失礼 提交于 2020-08-19 06:24:11
问题 I'm having trouble with opening a file. Most examples read files into a String or read the entire file into a Vec . What I need is to read a file into chunks of a fixed size and store those chunks into an array ( Vec ) of chunks. For example, I have a file called my_file of exactly 64 KB size and I want to read it in chunks of 16KB so I would end up with an Vec of size 4 where each element is another Vec with size 16Kb (0x4000 bytes). After reading the docs and checking other Stack Overflow

How to implement Eq and Hash for my own structs to use them as a HashMap key?

一世执手 提交于 2020-08-19 05:54:11
问题 I have two structs, A and B , and I want to use a HashMap<A, B> . I have a piece of code like this: use std::collections::HashMap; pub struct A { x: i32, y: i32, title: String, } pub struct B { a: u32, b: u32, } fn main() { let map = HashMap::new(); map.insert( A { x: 10, y: 20, title: "test".to_string(), }, B { a: 1, b: 2 }, ); } But the compiler gives me these errors: error[E0277]: the trait bound `A: std::cmp::Eq` is not satisfied --> src/main.rs:16:9 | 16 | map.insert( | ^^^^^^ the trait

Google 也要放弃 C/C++?Chrome 代码库中 70% 的安全漏洞是内存问题

六眼飞鱼酱① 提交于 2020-08-18 08:27:52
Google 工程师表示:目前 Chrome 代码库中所有严重的安全漏洞,70% 是内存管理的安全漏洞,其中 50% 的内存漏洞是 use-after-free 漏洞,因为对内存指针的错误管理,给予了攻击者攻击 Chrome 内部组件的机会。 近日,Google 工程师统计了 2015 年以来,Chrome 稳定分支中修复级别为 “high” 或 “critical” 的 912 个安全错误,结果发现约 70% 是内存安全漏洞。 事实上,不只是 Google,内存安全漏洞是很多科技公司都头疼的问题,微软工程师也曾公开表示:在过去 12 年中,微软产品的安全更新中,约有 70% 也是在解决内存安全漏洞。 为什么微软和 Google 的情况如此相似呢?因为它们代码库中使用的主要编程语言是 C 和 C++,由于 C 和 C++ 出现的时间较早,当时网络攻击还不是利用相关的威胁模型,大多数早期软件开发人员也没有考虑到相关的安全问题,所以 C 和 C++ 允许程序员完全控制管理应用程序的内存指针,出现基本的内存管理错误时,也没有相关的提示或者警告。 Chrome 的内存安全问题如何解决? 据了解,自 2019 年 3 月以来,在 130 个级别为 critical 的 Chrome 漏洞中,有 125 个是与内存相关的。这个数据也表明了,内存管理错误仍然是 Google 的一个大问题。

Rust的已排序队列折半查找

痞子三分冷 提交于 2020-08-18 07:58:31
已排序队列,折半查找。 这里是i32队列,复杂队列以后空了扩展 fn main() { let mut v = Vec::new(); for pat in 1..2000 { v.push(pat) } println!("Vec::{:?}", v); let c = find_with_if(721, 0, (v.len()-1) as i32, &v); println!("721 角标是: {:?}", c); // let c1 = find_with_if(234, 0, (v.len()-1) as i32, &v); println!("234 角标是: {:?}", c1); // let c1 = find_with_match(513, 0, (v.len()-1) as i32, &v); println!("513 角标是: {:?}", c1); } // 在排好序的数组中找到给定值 // x: i32 要找的值 // s: i32 查找起点角标 // e: i32 查找终点角标 // l: &Vec<i32> &数组 借用的队列 // 如果能 约定对比大小相等可以查找任何类型的数组 fn find_with_if(x: i32, s: i32, e: i32, l: &Vec<i32>) -> i32{ if s == e { println!(

Nervos CKB初体验

徘徊边缘 提交于 2020-08-18 06:49:14
目录 介绍 与其他公链的区别 CKB特性 NC Max Cell 模型 RISC-V VM 经济模型 数据结构 CKB 编程模型 加入测试网络Aggron 系统环境 下载命令行程序 初始化配置 运行测试链 访问测试链 加入主网 初始化配置 修改挖矿配置 运行主链 开启挖矿 ckb-cli命令行 使用方法 设置rpc url TUI 创建新账户 领取测试币 查看余额 再创建一个账户(接收转账) 转账 查看交易 查询余额 导出私钥 查看公钥、生成block_assembler 导入私钥 IDE 介绍 Nervos 是一个旨在满足去中心化经济需求的 分层网络 。Layer 1 协议 CKB(Common Knowledge Base 共同知识库)是整个网络的价值存储层,Layer 2 协议在 Layer 1 区块链上提供了无限的可扩展性。 Nervos 网络 = 坚持安全和去中心化的 CKB + 百花齐放的 Layer2 与其他公链的区别 比特币作为一个单一的可编程资产,在 Nervos CKB 上,所有的用户自定义代币(UDT)都可以和原生代币(CKB)都可以通过图灵完备的脚本进行编程,Nervos CKB 是一个多资产可编程的底层智能合约平台。 CKB 并没有采用账户模型,而是 采用了和比特币一样的 UTXO 模型 ,并基于 UTXO 设计了一套新的编程模型 —— cell 模型。

简简单单的来入个deno的门吧

 ̄綄美尐妖づ 提交于 2020-08-17 08:37:35
前不久, deno1.0 正式发布,相信大家应该都已经听过它了.毕竟deno的作者正是大名鼎鼎的nodeJS之父Ryan Dahl.他在之前声称node已经无力回天了,所以他决定新写一个deno.意为destroy node.通俗的说就是一个号练废了,现在要重新练一个号. deno怎么发音,有说 蒂诺 的,有说 德诺 的.为此,我特意去YouTube上听了下deno作者的发音, 链接戳我 ,但我怎么感觉听着更像是 呆诺 呢? 各位同学可以自行爱好发音. deno特性 Deno是使用V8引擎并内置于Rust的一个简单现代并且安全的JavaScript和TypeScript运行时(Tips: 原先是用golang开发的,后来因为性能问题改用Rust) 这里简单的列了一下其中的一些特性: 默认为安全,除非明确启用,否则没有文件,网络或环境访问权限 开箱即用的支持TypeScript 仅发送一个可执行文件 具有内置的实用程序,如依赖检查器和代码格式化(fmt) 拥有一组保证能够与deno一起使用的经过审核的标准模块: 链接戳我 安装 因为我自己是macOS系统,所以国际惯例使用homebrew来安装 brew install deno 复制代码 window系统的安装方式 choco install deno 复制代码 还有其他的安装方式,可以自行查看: 如何安装 测试安装 deno -

rust 社区一些大神.

ε祈祈猫儿з 提交于 2020-08-17 04:51:46
2020/6/30 8:13:39 比如在单片机中做一个定时器相关的功能,放到结构体中,把FnMut指针传递为定时器回调函数,这样可以创建多个公用一套代码 上海-JiaYe2020/6/30 8:19:18 找到一篇文章,我看看 4409) 9:00:41 大神们早. M̶a̶g̶ox(46257902) 9:13:16 风格的格局观不一样,效率也不一样,依赖管理是核心,算上自动化,就更妙了,最后就是条条大路通罗马 https://zephyrzoom.github.io/2018/11/06/zip-encrypt.html https://space.bilibili.com/8362587/ 来源: oschina 链接: https://my.oschina.net/innovation/blog/4329391

rust 返回 impl Future 的三种写法。

不羁岁月 提交于 2020-08-17 04:14:50
use futures::{future, Future}; use futures::future::{FutureExt, Ready}; use std::result::Result; use std::error::Error; // 返回 impl Future 的三种写法 async fn f() -> Result<usize, Box<dyn Error>> { if false { let a: Ready<Result<usize, Box<dyn Error>>> = futures::future::ok(1); let b = a.map(|x| Ok(x.unwrap() + 1)); b.await } else if true { async{1}.map(|x|Ok(x+1)).await } else { let a = async {1}; let b = a.map(|x|Ok(x+1)); b.await // then() 的使用: // b.then(|x:Result<usize, Box<dyn Error>>| async {Ok(x.unwrap()+1)}).await } } fn main() { let a = f(); let c = futures::executor::block_on(a); println!(

至联云讲解《IPFS/FIL主网上线倒计时》

走远了吗. 提交于 2020-08-16 16:47:44
2020年6月6日,Filecoin官方开始组建代码安全研究小组Filecoin Security Research Fellowship。 在Slack上创建了一个讨论组fil-fsrf,采取邀请制,目前安全研究小组一共集结了21位全球矿工,原力区两位代码矿工应邀加入,包括dtynn和taoshengshi。 根据官方指导内容,官方列举了四个优先考虑的重点模块: specs actors - 智能合约部分 chain sync - 主链同步逻辑 Markets - 交易市场逻辑 rust-fil-proofs - 数据处理以及零知识证明部分 为了让更多的开发者能深度参与到Filecoin网络建设,此次Filecoin官方组建安全小组,鼓励开发者积极提交代码bug,并对bug发现者给予最高5000美金奖励(具体金额会调整)! 每个安全研究员会给予一定的初始奖励。官方会记录每个研究员报告bug的数量和质量。对提交数量和质量比较高的研究员,有额外的奖励。 那么如何参与呢? 如何找bug?官方给出了一些找bug的方式:阅读代码,压力测试,Fuzzing(随机测试)。 如何报bug?简单的bug,可以反馈到Slack群。Critical严重bug,可以提供至security@filecoin.io邮件。所谓的严重bug,官方给出一些例子:钱包地址多签不起作用,矿工惩罚机制不起作用

Julia回文数

﹥>﹥吖頭↗ 提交于 2020-08-16 16:37:19
C,D,Go,Rust,Nim,Zig,V,Julia,Py 9语回文数大战!仅供娱乐参考! https://my.oschina.net/raddleoj/blog/510932 julia 20200816 成都今天下雨 //貌似julia要先安装包,在 julia 环境下执行 import Pkg; Pkg.add("Dates") # 这是标准库的居然要安装! using Dates using Printf """ 是否回文 """ function ishuiwen(n::Int64) sn::Int32 = 0 # 可以不用类型 sn = n tn::Int32 = 0 while sn != 0 tn = tn * 10 + sn % 10 sn = sn ÷ 10 end if tn == n return true end return false end """ 回文10000000 """ function huiwen(max::Int64=10000000) tx::Int32 = 0 x::Int32 = 0 for i = 0:max if ishuiwen(i) == true tx+=1 end end return tx end function run() t1 = now() r = huiwen(10000000) t2 = now()