- 博客(14)
- 资源 (5)
- 收藏
- 关注
翻译 rust的Iterator
这个文章讲的还是挺详细的,有空了再翻译下http://hoverbear.org/2015/05/02/a-journey-into-iterators/
2015-09-29 15:18:56 961
原创 查找rust平台相关代码的文档
今天查encode_wide这个函数一直找不到,google才发现是online文档的问题rust的online文档是linux上生成的,所以有些windows上的东西查不到,查找与windows相关的doc使用本机上自带的doc具体在安装路径下: share\doc\rust\html\index.html 比如我的: C:\Program Files\Rust nightly 1.5\sh
2015-09-29 14:24:59 1358
原创 notepad++ 正则替换的占位符超过9的处理方法
notepad++的正则替换的时候使用()进行分组,然后用\1 \2 …\9代替这些分组匹配到的信息,但是超过9以后 \10,\11这种就不能工作了,这个时候需要用10,10,11这种方法,其实\1 \2 …\9也可以用11 2 … $9来替代sublime text 使用$xx 也可以正常工作
2015-09-25 15:02:56 2205
原创 含有重复元素的二分查找算法
rust已经有binary_search了,但不能很好的处理有重复元素的查找。 下面这个是我按照网上查找到的原理自己实现的,这个处理重复元素比较好,如果key有重复,那么总是查找到最小的那个indexfn main() { let s = [0, 0,0,0,0,1,1,1, 1, 1, 1, 2,2,3, 3, 5, 8, 13, 21, 34, 55]; let seek = 1
2015-09-18 10:19:17 7323
原创 Rc与Box区别
咋一看觉得这两个概念差的很远,但是有时候他们都可以在不释放资源的情况下把资源从lifetime短的地方传递到lifetime长的地方use std::rc::Rc;#[derive(Debug)]struct Foo(i32);fn main(){ let r:Rc<Foo>; let b:Box<Foo>; { let r1 = Rc::new(Foo(
2015-09-16 12:11:32 1729
原创 多个closure引用同一个变量,并且可能需要mut borrow
目前在实现一个事件系统,事件采用保存closure的方式实现,这其中遇到一个比较棘手的问题就是如果其中一个closure用&mut方式捕捉了一个变量,那么其他closure就不可以再用任何方式捕捉这个变量(rust的borrow check系统),并且如果要&mut捕捉还需要把closure的类型写成FnMut,类似这种: add_event<F>(&mut self,f:F) where F:F
2015-09-16 10:53:01 780
原创 Sized和?Sized的作用
考虑如下代码,这个是用Foo封装了两个Box类型,Bar把Fn(i32)作为类型传递给Foo并且把Foostruct Foo<T>{ a:Box<T>, b:Box<T>,}struct Bar{ fs:Foo<Fn(i32)>,}fn main(){}这个代码是无法编译通过的,下面是编译器提示:<anon>:7:5: 7:20 error: the trait `co
2015-09-09 23:14:39 5634
转载 rust compile plugin的使用方法
具体可以参考这篇文章: https://www.gulshansingh.com/posts/how-to-write-a-rust-syntax-extension/
2015-09-06 15:10:19 862
原创 调试rust的宏
nightly版本可以用 trace_macros!,具体看这个: http://stackoverflow.com/questions/30200374/how-do-i-debug-macros下面是我写的列子:#![feature(trace_macros)]trace_macros!(true);macro_rules! foo{ ($x:ident,$f:ident)=>{
2015-09-05 21:26:33 8200
原创 rust里closure的move和Fn,FnMut,FnOnce
https://www.reddit.com/r/rust/comments/2ti57s/iron_framework_and_lifetime_problems_with/. There seems to be two cases where a captured value is moved, copied or borrowed: when a closure is made (crea
2015-09-04 21:50:34 2555
原创 在rust里使用unstable feature
使用unstable feature的条件和步骤: 1. 只有nightly才可以使用unstable 2. 找到unstable feature的名字 3. #![feature(xxx)]启用这个feature下面是 std::ptr里的as_ref引起的 编译器错误来举例: use of unstable library feature ‘ptr_as_ref’: Option is
2015-09-04 09:16:37 7052
原创 在rust里使用c样式的函数指针
Fn(i32)->i32这个是trait,&Fn(i32)->i32这个是trait object,有lifetime的 fn(i32)->i32这种就是c里的函数指针了,这个是没有lifetime的fn hello(i:i32)->i32{ println!("hello:{}",i); i+100}fn hi(f:fn(i32)->i32){ f(3);}struc
2015-09-01 16:15:31 2619
原创 rust泛型过度使用思考
目前了解来看rust泛型的概念很好,比c++多了很多类型限定和编译时检查,出错提示相对c++来说也特别特别的友好。但任何事物总是有两面性,过度的使用泛型会使得代码极度的膨胀,这个膨胀的速度在我看来比c++的模板快多了1 trait里的默认函数和方法引起的代码膨胀首先来看一段简单的代码:trait Foo{ fn foo(){ println!("foo"); }
2015-09-01 11:15:44 4321 2
原创 rust的一些细节
与其说是细节还不如说是一些“废话”,不仔细想的时候会感觉到模棱两可的东西都记录下来trait里的函数和方法可以在其他impl里使用,但是类型自己的impl的函数不能在trait里调用其实这个也比较好理解,可以有很多的type可以实现trait,那么trait就不可能调用某个特定类型自己的方法或者函数;反过来某个类型实现了某个trait则trait的函数必然可以调用struct Foo;impl Fo
2015-09-01 09:20:17 905
在Go包里添加C代码并且不使用CGO(不需要gcc)
2013-10-13
wxwidgets集成IE浏览器控件
2010-06-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人