精华内容
下载资源
问答
  • Rust编程之道》随书源码 本书现在已出版。 跟进Rust 2018最新特性!! 跟进Rust 2018最新特性!! 跟进Rust 2018最新特性!! 说明:本仓库代码暂时不接受任何PR,因为很多都是随书源码案例,其中代码有专门的...
  • Rust编程之道

    千次阅读 2019-08-30 08:26:02
    看目录,和官方文档重合内容...感觉上这本书只是《Rust官方文档搬运之道》而已。我认为官方文档配合rustlings(https://github.com/rust-lang/rustlings/)以及examples(https://doc.rust-lang.org/stable/rust-b...
    • https://book.douban.com/subject/30418895/

    • 看目录,和官方文档重合内容太多了。感觉上这本书只是《Rust官方文档搬运之道》而已。我认为官方文档配合rustlings(https://github.com/rust-lang/rustlings/)以及examples(https://doc.rust-lang.org/stable/rust-by-example/)是最好的入门方式吧。 如果是因为英文搞不定而看中文的话,那我建议还是不要用rust了。毕竟这个语言太新,写书的作者自己也没有太多实际项目的编程经验,更多的讯息和指南都需要通过阅读英文材料来获取。 (收起)

    • 总是跳过最关键的部分,每次都要去翻 nomicon 和源码

    展开全文
  • 帮助新手理解什么是编程,以及编程的实际意义和价值
  • 编程之道全本(PDF)

    2011-03-03 15:42:13
    这是我们老师推荐给我们看的,好东西,不解释
  • Rust编程语言.pdf

    2019-08-07 00:00:58
    Rust编程语言中文版PDF,带完整书签。基于Rust中文网内容制作,离线版本方便查阅。
  • Cargo.toml [package] name = "ioc_macro" version = "0.1.0" edition = "2018" ... let person: Person = Person::new("rust".into()); println!("person name is {}", person.name); }  

     Cargo.toml

    [package]
    name = "ioc_macro"
    version = "0.1.0"
    edition = "2018"
    
    [dependencies]
    syn = "1.0"
    quote = "1.0"
    proc-macro2 = "1.0.7"
    
    [lib]
    proc_macro = true

     

    lib.rs

    extern crate proc_macro;
    
    use {
        syn::{Token, DeriveInput, parse_macro_input},
        quote::*,
        proc_macro2,
        proc_macro::TokenStream,
    };
    
    #[proc_macro_derive(new)]
    pub fn derive(input: TokenStream) -> TokenStream {
        let ast = parse_macro_input!(input as DeriveInput);
        let result = match ast.data {
            syn::Data::Struct(ref s) => new_for_struct(&ast, &s.fields),
            _ => panic!("doesn't work with unions yet"),
        };
        result.into()
    }
    
    fn new_for_struct(ast: &syn::DeriveInput, fields: &syn::Fields) -> proc_macro2::TokenStream {
        match *fields {
            syn::Fields::Named(ref fields) => {
                new_impl(&ast, Some(&fields.named), true)
            }
            syn::Fields::Unit => {
                new_impl(&ast, None, false)
            }
            syn::Fields::Unnamed(ref fields) => {
                new_impl(&ast, Some(&fields.unnamed), false)
            }
        }
    }
    
    fn new_impl(ast: &syn::DeriveInput, fields: Option<&syn::punctuated::Punctuated<syn::Field, Token![,]>>, named: bool) -> proc_macro2::TokenStream
    {
        let struct_name = &ast.ident;
        let unit = fields.is_none();
        let empty = Default::default();
        let fields: Vec<_> = fields.unwrap_or(&empty).iter().
            enumerate()
            .map(|(i, f)| FieldExt::new(f, i, named)).collect();
        let args = fields.iter().map(|f| f.as_arg());
        let inits = fields.iter().map(|f| f.as_init());
        let inits = if unit {
            quote!()
        } else if named {
            quote![{ #(#inits), *}]
        } else {
            quote![( #(#inits), *)]
        };
        let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl();
        let (new, doc) = (
            syn::Ident::new("new", proc_macro2::Span::call_site()),
            format!("Constructs a new `{}`.", struct_name)
        );
        quote! {
             impl #impl_generics #struct_name #ty_generics #where_clause {
                     #[doc=#doc]
                     pub fn #new(#(#args),*) ->Self {
                        #struct_name #inits
                     }
               }
            }
    }
    
    struct FieldExt<'a> {
        ty: &'a syn::Type,
        //存储类型
        ident: syn::Ident,
        // 结构体信息
        named: bool,//是否是有名字的结构体
    }
    
    impl<'a> FieldExt<'a> {
        pub fn new(field: &'a syn::Field, idx: usize, named: bool) -> FieldExt<'a> {
            FieldExt {
                ty: &field.ty,
                ident: if named {
                    field.ident.clone().unwrap()
                } else {
                    syn::Ident::new(
                        &format!("f{}", idx),
                        proc_macro2::Span::call_site())
                },
                named: named,
            }
        }
        pub fn as_arg(&self) -> proc_macro2::TokenStream {
            let f_name = &self.ident;
            let ty = &self.ty;
            quote!( #f_name: #ty)
        }
        pub fn as_init(&self) -> proc_macro2::TokenStream {
            let f_name = &self.ident;
            let init = quote!(#f_name);
            if self.named {
                quote!(#f_name: #init)
            } else {
                quote!( #init)
            }
        }
    }

    test.rs

    use ioc_macro::new;
    
    #[derive(new)]
    struct Person {
        name: String,
    }
    
    #[test]
    fn call() {
        let person: Person = Person::new("rust".into());
        println!("person name is {}", person.name);
    }
    
    

     

    展开全文
  • 安全编程之道

    2007-10-11 17:09:37
    安全编程之道,英文原版,不错的编程提高书
  • RUST编程中文手册

    2018-07-26 21:20:00
    RUST编程中文手册 随时可以翻看 真的很不错 不可错过 积分只是表示一下
  • rust编程指南

    2019-04-28 10:26:57
    rust编程指南工具书,包括环境搭建,cargo自动化部署,以及众多样例工程
  • Rust编程语言编写的socket.io客户端的实现。 此实现当前支持socket.io协议的修订版5,因此支持engine.io协议的修订版4。 如果与此客户端有任何连接问题,请确保服务器至少使用engine.io协议的修订版4。 用法示例 ...
  • 编程之道~~

    2012-10-08 20:19:28
    编程之道》[美]Geoffrey James 前言 第一篇 静寂的空宇 第二篇 古代的大师 第三篇 设计 第四篇 编码 第五篇 维护 第六篇 管理 第七篇 公司里的学问 第八篇 硬件和软件 第九篇 尾声
  • Rust 程序设计语言(第二版).pdf 学习rust必备,rust是mozilla开发,rust的作者也是javascript的作者。
  • Rust-Postgres PostgreSQL支持Rust。 Postgres 本机,同步PostgreSQL客户端。 东京邮报 本机异步PostgreSQL客户端。 Postgres类型 Rust和Postgres类型之间的转换。 postgres-native-tls 通过native-tls对PostgreSQL...
  • learning-rust:Rust学习路> Rust编程教程,包括文章,访谈,示例,问题
  • glfw-rs Rust编程语言的GLFW绑定和包装。 示例extern crate glfw; 使用glfw :: {Action,Context,Key}; fn main(){le glfw-rs Rust编程语言的GLFW绑定和包装。 示例extern crate glfw; 使用glfw :: {Action,...
  • Rust:Rust编程-源码

    2021-02-13 18:05:56
    编程 安装 在$HOME/.config/创建rust目录 在.zshrc添加以下内容: export RUSTUP_HOME=$HOME/.config/rust/rustup export CARGO_HOME=$HOME/.config/rust/cargo export PATH=$HOME/.config/rust/cargo/bin:$PATH ...
  • Rust编程语言-Rust开发

    2021-05-27 17:54:19
    Rust编程语言这是Rust的主要源代码存储库。 它包含编译器,标准库和文档。 快速入门阅读本书中的“安装”。 从源代码安装注意:如果您希望对编译器有所帮助,则应阅读rustc-dev-guide的这一章而不是本节。 Rust构建...
  • 该项目的目标是使用Rust编程语言从无精打采地实现 。 即使依靠xlib库迫使我们在代码中使用不安全的C功能,我们也将尝试使用尽可能多的Rust“安全”功能。 依存关系 xlib和xft库(应该安装在任何linux系统上) ...
  • Rust 程序官方文档 本书全⾯介绍了 Rust 为⽤户赋予的能⼒。其内容平易近人,致力于帮助你提升 Rust 作为程序员整体的理解与自信。Rust 能让你在更为⼴泛的编程领域走得更远,写出自信。
  • 我的Rust编程第一课

    2021-08-29 13:06:53
    在2020年5月17日,HengLi在它的一篇博客「Fast high-level programming languages」提到,他一直在寻找一门编程语言,生物学家容易使用而且速度还快。( I have always been searching for a high-level language ...

    题图来源: Bio-Rust

    在2020年5月17日,HengLi在它的一篇博客「Fast high-level programming languages」提到,他一直在寻找一门编程语言,生物学家容易使用而且速度还快。( I have always been searching for a high-level language that is fast and easy to use by biologists. )

    于是在这篇博客中,他评估了一些高级编程语言的处理速度,包括,C, Python, Javascript, LuaJIT, Nim, Crystal,Rust。其中Rust在FASTQ的解析速度上略胜于C语言。

    同时在2020年12月的nature的technology feature中也有一篇是关于Rust,「Why scientists are turning to Rust」地址为https://www.nature.com/articles/d41586-020-03382-2

    里面有一张图,是评估Rust近年来的社区状态的(即相关包的增长数量),从中可以发现Rust的增长超过了R。

    Rust社区活跃

    我并不是某个编程语言的信徒,平常用的最多的是R和Python,同时经常性的找机会学习C和C++,以及每隔几个月会去尝试学一门新的编程语言。

    这一次,我是跟着极客时间里的一门课,「陈天·Rust编程第一课」学习Rust。
    基础配置:安装Rust工具链

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    

    我使用VScode进行开发,并安装了如下插件

    • rust-analyzer (语法分析)
    • rust syntax (语法高亮)
    • crates
    • better toml (TOML格式更好的展示)
    • rust test lens
    • Tabnine (基于机器学习的自动补全,不只是Rust)

    接着,尝试使用Rust构建第一个程序。我的目标是读取Fasta,统计其中的A, T, C, G各有多少个。
    完成这个需求,有两个思路,第一个是调用成熟的库,第二个是自己造轮子写一个函数。
    对于思路1,我使用关键词,Rust和Bio搜索到一个库叫做,rust-bio。https://rust-bio.github.io/

    接下来,使用cargo new创建项目

    cargo new fasta_count
    

    第二步: 添加依赖。编辑 Cargo.toml , 添加依赖信息

    [dependencies]
    bio = "0.37.1"
    

    第三步: 学习rust-bio文档,查找相关函数,然后在 src/main.rs中编写代码。

    use bio::io::fasta;
    use std::io;
    
    fn main() {
        let  reader = fasta::Reader::new(io::stdin());
        let mut nb_a = 0;
        let mut nb_t = 0;
        let mut nb_c = 0;
        let mut nb_g = 0;
        for result in reader.records(){
            let record = result.expect("Error during fasta record parsing");
            for &base in record.seq() { //return sequence
                if base == b'a' || base == b'A' {
                    nb_a += 1;
                } else if base == b'c' || base == b'C'{
                    nb_c += 1;
                } else if base == b'g' || base == b'G'{ 
                    nb_g += 1;
                } else if base == b't' || base == b'T'{ 
                    nb_t += 1;
                }
            }
        }
        println!("A:{}, C:{}, G:{}, T:{}", nb_a, nb_c, nb_g, nb_t);
    }
    

    我使用标准库io::stdin从标准输入中读取数据,然后利用fasta::Reader的new出一个新的reader实例。对该实例的records对象进行遍历,得到fasta的中记录,record。最后对记录中序列进行遍历,得到不同碱基的数目。

    第四步:编译代码。cargo会先将依赖环境下载到当前项目下,然后在进行编译。
    cargo build

    编译结果存放在 target的debug目录下,名为fasta_count。我们运行程序,得到结果。

    cat TAIR10.fa | target/debug/fasta_count
    # A:38223602, C:21551439, G:21528650, T:38177852
    

    第一种思路的代码,是看教程里使用案例"使用HTTP获取HTML然后保存成Markdown"后,自己尝试的第一个和生信相关程序。在尝试过程中,由于对基本的数据类型不了解,所以在处理字符的时候,还专门去检索了下 ‘a’ 和 b’a’的区别,以及为什么要用一个b’’.
    鉴于自己的水平太次,还是决定后续学习更多Rust基础再来尝试吧。

    最后说说自己的编程体验:

    每一门编程语言都有其特殊的语法,在Rust中,Rust用let对类型进行推导,而C++中是用auto进行类型推导。Rust和Python类似,可以直接用for x in xxx对xxx进行遍历,而C++则是 for (auto x : xxx )。Rust使用{}声明代码块,而不是Python那样子使用缩进。在函数返回上,Rust可以用return 显示说明要返回的内容,还是隐式将最后一个值(不能加上;)作为返回值,这个跟R语言又很像。当然还有函数定义,python用def 函数名, C和C++是返回值 函数名,R用 函数名 <-function, GO是 func 函数名, Rust用的是新的缩写 fn 函数名。

    每次我学一门编程语言的时候,我都在想,这种语法上的特立独行,到底是为了什么呢?
    吐槽完语言,最后夸夸Rust的编译器。它的编译器非常强大,能够很好的指出的我代码中的错误,便于检索debug。甚至有些时候都不需要检索,因为它会直接跟你说怎么改。就仿佛有一个老师在你方便,跟你说,你这里不对,你要这样子做。

    展开全文
  • 视频地址 头条地址:https://www.ixigua.com/i6765442674582356483 B站地址:https://www.bilibili.com/video/av78062009?p=1 网易云课堂地址:...g...

    视频地址

    头条地址:https://www.ixigua.com/i6765442674582356483
    B站地址:https://www.bilibili.com/video/av78062009?p=1
    网易云课堂地址:https://study.163.com/course/introduction.htm?courseId=1209596906#/courseDetail?tab=1

    github地址

    github地址

    读取文件

    将文件读取成二进制,使用read函数

    use std::fs;
    
    fn main() {
        let context = fs::read("tt").unwrap();
        println!("context: {:#?}", context);
    }
    

    将文件读取成字符串

    use std::fs;
    
    fn main() {
        let context = fs::read_to_string("tt").unwrap();
        println!("context: {}", context);
    }
    

    读取目录

    use std::io;
    use std::fs;
    use std::path::Path;
    
    fn visit_dirs(dir: &Path) -> io::Result<()> {
        if dir.is_dir() {
            for entry in fs::read_dir(dir)? {
                let entry = entry?;
                let path = entry.path();
                if path.is_dir() {
                    visit_dirs(&path)?;
                } else {
                    let c = fs::read_to_string(path).unwrap();
                    println!("file = {}", c);
                }
            }
        }
        Ok(())
    }
    
    fn main() {
        //let context = fs::read("tt").unwrap();
        //println!("context: {:#?}", context);
    
        //let context = fs::read_to_string("tt").unwrap();
        //println!("context: {}", context);
    
        visit_dirs(Path::new("./test")).unwrap();
    }
    
    
    展开全文
  • Rust编程语言 该存储库包含“ The Rust Programming Language”这本书的源代码。 。 您还可以免费在线阅读该书。 请参阅该书随附的最新, 或Rust版本。 请注意,这些版本中的问题可能已经在此存储库中修复,因为...
  • 用于Rust编程语言的运行时。 例如,您可以查看 , 以获取相应的生成代码,并可以看到来获取实际用法示例。 ANTLR4工具(解析器生成器) 生成器部件当前位于我的antlr4叉rust-target分支中。此存储库中的版已自动...
  • println!#Rust无处不在:Rust编程语言跨平台开发 这仍然是一个WIP,但是其想法是创建一个可以跨平台使用的小型RUST项目: 安卓 的iOS 桌面 网页 后端 去做 Windows支持:目前正在为Linux和Mac构建。
  • Rust_Programming_Language:Rust编程语言书中的代码示例
  • 您将要读到的《编程之道》一书便是出息美国的一位善于进 行哲学性思考、有十多年工作经验的程序设计师--Geoffrey James 之手。 在本书中,作者以一种幽默、辛辣的眼光审视着发生在程序设计室里的各种各样 的小故事...
  • 灰尘 Windows 的 GUI 框架

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,830
精华内容 5,532
关键字:

rust编程之道