随笔分类 - Rust
摘要:一个用于处理fastq测序文件的命令行小工具,功能还在不断更新中,子命令也不多,支持gzip压缩文件的输入和输出(结果文件名以.gz结尾,结果会自动压缩)。 reop: https://github.com/sharkLoc/fqkit install: cargo install fqkit us
阅读全文
摘要:按照key和value升序、降序、自定义排序示例 use std::collections::HashMap; use std::cmp::Ordering; fn main() { let mut df = HashMap::new(); for x in 5..=12 { let k = for
阅读全文
摘要:多线程之间的通信和内存共享常见方式 use std::sync::mpsc; use std::thread; use std::sync::{Arc,Mutex}; struct User { name: String } fn main() { // Arc 通过共享内存 在线程间通信 数据不可
阅读全文
摘要:[上一篇](https://www.cnblogs.com/mmtinfo/p/16842120.html)博文中写到出了这个小工具,现在更新到0.2.5了,新增了一些子命令。有seqtk,seqkit等好用的工具珠玉在前,还写这个主要是学习和熟悉rust这门语言的基础语法了,写出来自己玩儿咯。 #
阅读全文
摘要:以下代码是chatGPT给出的示例代码,智能AI果然NB // Define a trait for an animal trait Animal { fn make_sound(&self) -> &'static str; } // Define two structs that impleme
阅读全文
摘要:不一次性将数据读入内存,只遍历一次数据即可等概率抽取子集数据,真是神奇。 测试例子: 0到99一百个数字中随机抽取10个数,每个数被抽到概率1/10;重复1000次抽样,结果统计每个数字被抽到的次数为 1000 * 1/10 = 100 次左右。 use rand::Rng; use std::co
阅读全文
摘要:断断续续的学了些rust语法,就想着写些简单的东西,以熟悉语法为主。这次主要针对fasta文件的简单处理写了fakit,参数也不多可以利用管道组合使用,主要是复杂的功能我不会,哈哈。 github: https://github.com/sharkLoc/fakit install git clon
阅读全文
摘要:前面写了一个fastq文件统计结果的可视化小软件,https://www.cnblogs.com/mmtinfo/p/16428960.html,抽空把测序质量分布热图补上了。大概这个样子,丑了点,将就着看,质量值和位置对应的数据越多,颜色就越深。后面抽空把命令行参数加上,可以指定输出图片的名字,图
阅读全文
摘要:定义一个求数组种最大值的泛型函数fn<T>largest(list: &[T]), largest1: 瑕疵在传入的参数于只适用于实现了Copy特征的类型. largest2: 添加Clone约束,改进后没有了参数类型的限制,但Clone会有额外的性能开销,会在堆上重新分配内存。 largest3:
阅读全文
摘要:同一时间泛型只能是同一种类型,否则就用多个泛型参数。结构体这里的泛型参数T和K,就表示不同的参数类型,当然T和K也可以是同一种类型。 #[derive(Debug)] struct Base<T,K> { x: T, y: T, z: K, } impl<T,K> Base<T,K> { fn ne
阅读全文
摘要:很久没更新博客了,惭愧OTZ.废话不多说,交作业啦(ง •_•)ง,学了一点rust基础,写了一个可视化fastq文件的小工具。 1、安装 地址:https://github.com/sharkLoc/visual_fq ,因为是linux平台下的工具(win下也是可以的嘛💪),预先安装依赖 。
阅读全文
摘要:rust特征小示例 1 #[derive(Debug)] 2 pub struct User{ 3 pub name:String, 4 pub gender: bool, 5 pub age:u8, 6 } 7 // 特征(接口) 8 pub trait Cheat{ 9 fn new(name:
阅读全文
摘要:就像下面的这个例子,直接把要返回的类型包裹在一个枚举中,接收函数再根据结果分别处理。 1 use std::fs::File; 2 use std::io::BufReader; 3 use flate2::read::GzDecoder; 4 #[allow(non_camel_case_type
阅读全文
摘要:fn main(){ // String 没有实现copy trait let line1 = String::new(); { let line1 = String::from("tmp"); // 离开作用域直接被释放 } println!("{}",line1); // 输入为空 // i32
阅读全文
摘要:1 fn max<T: std::cmp::PartialOrd >(nn: &Vec<T>) -> &T { 2 let mut f = &nn[0]; 3 for i in nn{ 4 if i > f { 5 f = i; 6 } 7 } 8 f 9 } 10 fn main(){ 11 le
阅读全文
摘要:1 struct Targ { 2 w:u32, 3 h:u32, 4 } 5 impl Targ { 6 fn aera(&self) -> u32 { 7 self.w * self.h 8 } 9 fn sround(&self) -> u32 { 10 (self.w + self.h )
阅读全文
摘要:枚举 1 fn main() { 2 let a_binding; 3 { 4 let x = 2; 5 a_binding = x * x; 6 } 7 println!("a binding: {}", a_binding); 8 9 let sn = Some(5); 10 let ss =
阅读全文
摘要:1 fn main() { 2 let mut demo = 12; 3 println!("{}",demo); 4 demo = 21; // 值可变,数据类型不可变 5 println!("{}",demo); 6 7 let mut demo = true; // 利用shadow 覆盖de
阅读全文
摘要:集群home目录被管理员限制了存储空间,rust安装要100多M,默认安装home目录下,查了一圈,没找到rust指定安装目录的办法。 这里记录下解决办法: 在想要安装的目录执行 mkdir -p cargo/bin rustup 先构建默认的目录层级,然后将cargo 和rustup目录软链接到h
阅读全文