原文标题:Why doesn't Rust's BTreeMap have a with_capacity() method? 原文链接:https://www.nicolas-hahn.com/2020/11/30/btreemap-with-capacity/ 公众号: Rust 碎碎念 翻译 by: Praying 声明:我发现这里已经有一篇解释,但是我认为它有点不太好理解,所以我希望我写的这篇文章能够更容易理解一些. Rust 的 HashMap(以及 HashSet 和 Vec)集合都…
原文链接:https://hashrust.com/blog/arrays-vectors-and-slices-in-rust/ 原文标题:Arrays, vectors and slices in Rust 公众号:Rust 碎碎念 翻译: Praying 引言(Introduction) 在本文中,我将会介绍 Rust 中的 array.vector 和 slice.有 C 和 C++编程经验的程序员应该已经熟悉 array 和 vector,但因 Rust 致力于安全性(safety),…
这个可以和类作比较,或是go当中的方法比较. #[derive(Debug)] struct Rectangle { width: u32, height: u32, } impl Rectangle { fn area(&self) -> u32 { self.width * self.height } fn square(size: u32) -> Rectangle { Rectangle {width: size, height: size} } } impl Rectangl…
原文标题:Understanding Closures in Rust 原文链接:https://medium.com/swlh/understanding-closures-in-rust-21f286ed1759 公众号: Rust 碎碎念 翻译 by: Praying 概要 闭包(closure)是函数指针(function pointer)和上下文(context)的组合. 没有上下文的闭包就是一个函数指针. 带有不可变上下文(immutable context)的闭包属于Fn 带有可变…
原文标题:Understanding Partial Moves in Rust 原文链接:https://whileydave.com/2020/11/30/understanding-partial-moves-in-rust/ 公众号: Rust 碎碎念 翻译 by: Praying 最近,我一直在研究Rust,虽然从很多方面来看它都是一门十分优秀的语言,但我也发现了很多不易察觉的复杂性.其中一个例子就是,不太引人注意的局部移动(partial move) .因此,我在想,为什么不写一篇文…
原文标题:Understanding Futures In Rust -- Part 1 原文链接:https://www.viget.com/articles/understanding-futures-in-rust-part-1/ 公众号: Rust 碎碎念 翻译 by: Praying 背景 Rust 中的 Futures 类似于 Javascript 中的promise[1],它们是对 Rust 中并发原语的强大抽象.这也是通往async/await[2]的基石,async/await…
原文标题:Understanding Futures in Rust -- Part 2 原文链接:https://www.viget.com/articles/understanding-futures-is-rust-part-2/ 公众号: Rust 碎碎念 翻译 by: Praying 背景 如果你还没有看前面的内容,可以在这里[1]查看(译注:已有译文,可在公众号查看). 在第一部分,我们介绍了 Future trait,了解了 future 是如何被创建和运行的,并且开始知道它们如何…
原文标题:Understanding Rust Lifetimes 原文链接:https://medium.com/nearprotocol/understanding-rust-lifetimes-e813bcd405fa 公众号: Rust 碎碎念 翻译 by: Praying 从 C++来到 Rust 并需要学习生命周期,非常类似于从 Java 来到 C++并需要学习指针.起初,它看起来是一个不必要的概念,是编译器应该处理好的东西.后来,当你意识到它赋予你更多的力量--在 Rust 中,它…
这个看起来是一个很小的问题,我们如果是在.NET里面的话,很简单地可以直接使用System.DateTime.Now获取到当前时间,还可以进行各种不同的计算或者输出.但是这样一个问题,在rust里面,还是费了我一些时间的.当然,我觉得这种折腾也是有些益处的,从中可以更好地理解rust的一些内部原理. 首先来看一下怎么做吧 rust默认自带的std库,里面并没有针对时间的功能,如果我们要处理时间(获取当前时间,或者计算两个时间的间隔等等)的话,需要引入一个额外的库,名称就叫time http://…
17.2. DOM2中的高级事件处理(Advanced Event Handling with DOM Level 2)        译自:JavaScript: The Definitive Guide, 5th Edition ----By David Flanagan         迄今为止,在本章中出现的事件处理技术都是DOM0级的一部分,所有支持JavaScript的浏览器都支持DOM0的API.DOM2定义了高级的事件处理API,和DOM0的API相比,有着令人瞩目的不同(而且功…
在学习Rust过程中突然想到怎么实现继承,特别是用于代码复用的继承,于是在网上查了查,发现不是那么简单的. C++的继承 首先看看c++中是如何做的. 例如要做一个场景结点的Node类和一个Sprite类继承它. 定义一个node基类 struct Node { float x; float y; void move_to(float x, float y) { this->x = x; this->y = y; } virtual void draw() const { printf(&qu…
[译]async/await中使用阻塞式代码导致死锁 这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁.内容主要是从作者Stephen Cleary的两篇博文中翻译过来. 原文1:Don'tBlock on Async Code 原文2:why the AspNetSynchronizationContext was removed 示例代码:async_await中使用阻塞式代码导致死锁.rar 一.async/await 异步代码运行流程 a…
原文:[译]async/await中使用阻塞式代码导致死锁 这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁.内容主要是从作者Stephen Cleary的两篇博文中翻译过来. 原文1:Don'tBlock on Async Code 原文2:why the AspNetSynchronizationContext was removed 示例代码:async_await中使用阻塞式代码导致死锁.rar 一.async/await 异步代码运行流…
1. as 运算符 as 运算符有点像 C 中的强制类型转换,区别在于,它只能用于原始类型(i32 .i64 .f32 . f64 . u8 . u32 . char 等类型),并且它是安全的. 例 在 Rust 中,不同的数值类型是不能进行隐式转换的,比如: let b: i64 = 1i32; 会出现编译错误,提示无法进行类型转换. error[E0308]: mismatched types --> src\main.rs:2:18 | 2 | let b: i64 = 1i32; | ^…
RefCell Rust在编译阶段会进行严格的借用规则检查,规则如下: 在任意给定时间,要么只能有一个可变引用,要么只能有多个不可变引用. 引用必须总是有效. 即在编译阶段,当有一个不可变值时,不能可变的借用它.如下代码所示: fn main() { let x = 5; let y = &mut x; } 会产生编译错误: error[E0596]: cannot borrow immutable local variable `x` as mutable --> src/main.rs:…
这个slice切片,python中有,go中有, 但确实,Rust中最严格. 精彩见如下URL: Rust 程序设计语言(第二版) 简体中文版 · GitBook (Legacy) https://kaisery.gitbooks.io/trpl-zh-cn/content/ch04-03-slices.html fn main() { let my_string = String::from("hello world"); let word = first_word(&my_…
我为什么学Rust? 2019年6月18日,Facebook发布了数字货币Libra的技术白皮书,我也第一时间体验了一下它的智能合约编程语言MOVE,发现这个MOVE是用Rust编写的,看来想准确理解MOVE的机制,还需要对Rust有深刻的理解,所以又开始了Rust的快速入门学习. 欧拉计划 看了一下网上有关Rust的介绍,都说它的学习曲线相当陡峭,曾一度被其吓着,后来发现Rust借鉴了Haskell等函数式编程语言的优点,而我以前专门学习过Haskell,经过一段时间的入门学习,我现在已经喜欢…
原文链接:https://dev.to/imaculate3/fearless-concurrency-5fk8 > 原文标题:That's so Rusty! Fearless concurrency 公众号:Rust 碎碎念 翻译: Praying 并发程序是指运行多个任务的程序(或看上去是多任务),即两个及以上的任务在重叠的时间跨度内运行.这些任务由线程--最小的处理单元执行.在其背后,并不完全是多任务(并行)处理,而是线程之间以普通人无法感知的速度进行上下文快速切换.很多现代应用程序都依…
原文标题:Macros in Rust: A tutorial with examples 原文链接:https://blog.logrocket.com/macros-in-rust-a-tutorial-with-examples/ 公众号: Rust 碎碎念 翻译 by: Praying 在本文中,我们将会涵盖你需要了解的关于 Rust 宏(macro)的一切,包括对 Rust 宏的介绍和如何使用 Rust 宏的示例. 我们会涵盖以下内容: Rust 宏是什么? Rust 宏的类型 Rus…
原文标题:Macros in Rust: A tutorial with examples 原文链接:https://blog.logrocket.com/macros-in-rust-a-tutorial-with-examples/ 公众号: Rust 碎碎念 翻译 by: Praying Rust 中的过程宏 过程宏(Procedural macros)[1]是一种更为高级的宏.过程宏能够扩展 Rust 的现有语法.它接收任意输入并产生有效的 Rust 代码. 过程宏接收一个TokenSt…
译<容器网络中OVS-DPDK的性能> 本文来自对Performance of OVS-DPDK in Container Networks的翻译. 概要--网络功能虚拟化(Network Function Virtualization,VFV)是一种突出的(prominent)技术,用虚拟化的网络软件来代替传统硬件网络节点.伴随着软件领域细分到微服务应用这一过程的发展,容器似乎(appear to)适应了应用程序的可靠性,可获得性,可操作性.为了促进(facilitate)在高稠密(high…
非正常大小的类型 大多数的时候,我们期望类型在编译时能够有一个静态已知的非零大小,但这并不总是 Rust 的常态. Dynamically Sized Types (DSTs) Rust 支持动态大小的类型(DST):这些类型没有静态(编译时)已知的大小或者布局.从表面上看这有点离谱:Rust 必须知道一个东西的大小和布局,才能正确地进行处理.从这个角度上看,DST 不是一个普通的类型,因为它们没有编译时静态可知的大小,它们只能存在于一个指针之后.任何指向 DST 的指针都会变成一个包含了完善…
repr(Rust) 首先,所有类型都有一个以字节为单位的对齐方式,一个类型的对齐方式指定了哪些地址可以用来存储该值.一个具有对齐方式n的值只能存储在n的倍数的地址上.所以对齐方式 2 意味着你必须存储在一个偶数地址,而 1 意味着你可以存储在任何地方.对齐至少是 1,而且总是 2 的幂. 基础类型通常按照其大小对齐,尽管这是特定平台的行为.例如,在 x86 上u64和f64通常被对齐到 4 字节(32 位). 一个类型的大小必须始终是其对齐方式的倍数(零是任何对齐方式的有效大小),这就保证了该…
原文地址:https://javaranch.com/journal/200409/ScjpTipLine-StringsLiterally.html 作者:Corey McGlone 让我们由一个简单的问题开始,什么是字符串字面量?一个字符串字面量就是两个双引号之间的字符序列,形如“string”.“literal”. 你可能已经在你的程序中使用字符串字面量几百次了,但是你可能还没意识到它在Java中是多么特殊. 字符串是不可变的 究竟什么使字符串字面量这么特殊?首先,记住重要的一点是字符串对…
原文 全局变量 最naive的办法是通过附加类库到window对象,使之成为全局变量: entry.js window._ = require('lodash'); MyComponent.vue export default { created() { console.log(_.isEmpty() ? 'Lodash everywhere!' : 'Un oh..'); } } 这个办法不好的是,当app运行在服务端的时候就糟糕了,我们会发现抛出了一个异常:window对象没有定义. 每个文…
早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问题,因此写着这里. 也许你没有遇到过,原因如下: 你oracle安装成功后,一直未停止数据库(即数据库是启动的),客户端配置成功后,应该一直不会有什么问题. 而一旦你和我同事一样,有时把Oracle安装在虚拟机中,而且Oracle安装完毕后,没在进行任何监听的配置,则虚拟机再启动,则就会出现ORA-12514…
iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作,需要的朋友可以参考下   DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.documentjquery方法:在父窗口中操作 选中IFRAME中的所有输入框: $(window.frames["iframeSon"].document).find(&qu…
在html中添加script脚本有两种方法,直接将javascript代码添加到html中与添加外部js文件,这两种方法都比较常用,大家可以根据自己需要自由选择 在html中添加<script>脚本的方法: 1.可以直接将javascript代码添加到html中 <script type="text/javascript"> //javascritp代码 </script> 当解释器嵌入<script>代码时,html页面的处理也会被暂时…
解释,不解释: 紧接上文,我们在Visual Studio2012中看到系统为我们自动创建的视图(View)文件Index.cshtml中,开头有如下这句话: @model IEnumerable<GuestBook.Models.Book> 这句话是MVC通过强类型获取数据的方式,我们可以看出,在MVC视图中使用了IEnumerable<T>接口来循环读取数据并生成列表,该接口在System.Collections.Generic命名空间下.这就需要我们在控制器中传递的数据也是I…
ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法 (2016-10-21 16:49:53)   今天在做一个查询的时候,报了一个"ORA-01652无法通过128(在表空间temp中)扩展temp段" ORA-01652: 无法通过128(在表空间TOSTEMP中)扩展 temp 段  ORA-06512: 在"Funcking", line 60  ORA-06512: 在line 1 错误解决网上也有一些相关的资料.我的实验解决…