通过例子学习Rust--14.泛型
泛型
泛型的命名方式是以大驼峰进行命名的。任何用泛型参数表示的类型都是泛型,其他的都是非泛型类型。
函数
使用某个类型之前使用,T就在后面使用过程之中变成泛型。
泛型类型的命名方式有显式命名和隐式命名,显式命名较为具体,隐式命名也可完成显式命名的任务。
实现
impl块实现泛型,和函数类似。
trait
trait也可是泛型
约束
对某些泛型进行设置约束,如Display打印 等一些trait约束。
测试实例:空约束
多重约束
使用➕号连接
也可以使用多个约束,分别命名为其他的类型即可。
where从句
使用where从句可以简化约束的写法。
关联类型
关联类型相当于是一种trait的嵌套,这样做的方法能够简化代码。
通过例子学习Rust--13.属性
属性
属性作用于模块、crate、项的元数据。
12#![crate_attribute] //作用于整个crate#[item_attribute] //作用于模块或者项
属性可以接收参数,可以有多个参数,分开放到多行之中。
死代码
dead_code 死代码,又叫做无效代码(lint),在rust 之中,可以禁用lint,来达到去除死代码警告的作用。
crate
crate_type告知编译器crate是一个二进制文件还是一个库。crate_name告知编译器crate的名称。
使用cargo的时候这两种类型都没有作用。
cfg
条件编译可通过两种不同的操作符实现。
具体的方法有cfg宏和cfg属性两种方法。
自定义条件
target_os等等一些方法是由rustc自动提供的,自定义的条件必须使用--cfg标记。
通过例子学习Rust--12.cargo
cargo
上一章的rustc在实际操作中很麻烦,所以需要使用cargo包管理器。cargo可以妥善处理第三方库的问题,这也造就了cargo在Rust中具有独特的优势。
依赖
相对于上一部分使用rustc,使用cargo创建新的项目会更简单
12cargo new foocargo new --lib foo
所有的配置文件在Cargo.toml之中:
12345678910[package]name = "foo"version = "0.1.0"authors = ["mark"][dependencies]clap = "2.27.1" # 来自 crates.iorand = { git = "https://github.com/rust-lang-nursery/rand" } # 来自网上的仓库bar = { path = "../bar" } # 来自本地文件系统的路径
约定规范
可以在bin文件夹 ...
通过例子学习Rust--11.crate库
crate
crate是Rust中真正编译的单元,而模块不是。调用some.rs之中,some.rs被当作crate文件,如果这个文件中有mod声明(只需要有声明,可以没有定义 ),这个mod中的内容会在编译之前被插入到相应的位置。
模块不会被单独编译,只有crate才可以。
库
注意库的命名方式,需要首先限制crate-type。
使用库
这一部分主要是使用rustc语句。
通过例子学习Rust———10.模块
通过例子学习Rust-10.模块
可见性
主模块可以直接访问其中的共有项,但是对于私有项来说是不能够直接访问的。
模块是可以嵌套的,嵌套内部的模块需要标注其内部的公有和私有属性,在模块之外只有共有的项可以访问。
pub(in crate::my_mod)pub(self)pub(super)只能在my_mod模块中访问,在主函数体中无法访问只能在自己内部访问,相当于是私有项只能在父模块中访问
嵌套内部的模块需要标注其内部的公有和私有属性
结构体的可见性
结构体可见性的作用是为了隐藏信息,在结构体之外访问的时候这个可见性才会产生作用。
带有私有字段的公有结构体不能访问其私有字段。
use声明
use声明可以使用某个模块中的某个函数,或者整个模块。
123456use deeply::nested::function as functionfn function() { println!("called function()");}
这时deeply中的function会覆盖原来的function。
super 和 self
s ...
Hexo美化
hexo 博客优化
参考文献:
两个小人、星空背景、流星
添加标签云
添加访客地图
添加阿里巴巴矢量图标
icp备案
butterfly官方教程
配置双栏
鼠标样式
配置双栏
hexo-magnet、hexo-history等
hexo博客使用butterfly主题
初期配置
进入博客目录下
1npm i hexo-theme-butterfly
然后在_config.yml之下使用这个主题:
1theme: butterfly
安装渲染插件
1npm install hexo-renderer-pug hexo-renderer-stylus --save
之后在主界面之下创建一个新的文件,命名为{ % label _config.butterfly.yml blue % }
1vi _config.butterfly.yml
将themes/butterfly/_config.yml中的内容全部copy进刚才创建的文件中,这个文件相当于用户自定义的文件,配置覆盖原来的配置
创建博客唯一链接:
1npm install hexo-abbrlink --save
然后进入_config ...
Arch Linux下hexo博客搭建和阿里云服务器配置
Arch Linux下hexo博客的搭建与阿里云服务器
提示
与其说是一个教程,其实是搜集过来的一些文章。
前提条件
安装必须的依赖文件
1sudo pacman -S npm nodejs git
使用node -v和npm -v检查是否安装成功
2. 使用npm安装hexo:
123npm install hexo-cli -g# hexo-cli 是 hexo的指令集。hexo -v
初始化hexo博客
12345mkdir blogcd bloghexo init #初始化hexo博客hexo g # hexo博客本地编译hexo s # hexo本地端口预览
如果本地端口占用,使用hexo s -p 4567或任意端口进行即可
阿里云服务器
购买阿里云服务器,如果是新人或者是学生,可以薅羊毛,买个轻量云服务器,一年下来也就40来块钱,是叫做飞天计划
阿里云对于学生优惠还是很大的,抓紧薅羊毛
我这里购买的是轻量应用服务器,进入阿里云首页,点击控制台,然后添加自己的服务器类型:
点击进入服务器,然后记住服务器的公网IP,在服务器运维 中选择远程连接,设 ...
linux学习
linux的安装
注意事项
linux使用过程中要及时添加timeshift(快照)
镜像的下载
选择适合你自己的linux发行版本,下载对应的iso镜像。这里使用的是Arch Linux.
因为不同版本的linux发行版本,其稳定性,系统简洁程度均不同,如果注重稳定,可以选择debian发行版本之下的ubuntu、国产的deepin等等…
linux发行版本列出一部分linux版本
ArchLinux
自定义程度高,有接近完美的archwiki。记得添加timeshift
Majaro
arch发行版本,相较于arch易于上手 ...
nvim配置系列(一):基础语法介绍
neovim系列(一) 操作命令
当前neovim系列,neovim的配置
neovim插件设置的命令
命令
意思
TAB
补全代码,借助coc-vim插件
Shift+TAB
在最小化,关闭之间切换
ctrl+l
打开coc-vim补全
enter
对补全进行确定
“g[“和”[g”
对错误行进行切换
gd
查找函数的定义
ctrl+o
对查找过的函数返回查找地方
‘\’+r
对函数进行重定义,这个命令在之后会和vim-visual-multi配合使用
‘’+h
对函数参考文档查看
插入模式
按键
含义
i
在光标的前边进入插入模式
I
在光标所在行的行首进入插入模式
a
在光标的后边进入插入模式
A
在光标所在行的行尾进入插入模式
o
在光标所在行的下方插入空行并进入插入模式
O
在光标所在行的上方插入空行并进入插入模式
s
删除光标指定的字符并进入插入模式
S
将光标所在行清除并进入插入模式
以前我所使用的方法仅仅是i,a,没有系统学习,在这里我觉得常用的方法是使用I在所在行 ...