周末浏览新闻,有人说RUST是现代版的C语言,我是C语言的忠实拥护者,但是这么多年来,工作并不需要,所以也很少写C代码,不如学习新式RUST语言。今天先把RUST按照好跑起来。就在我的UBUNTUs上完成。

Install Rust - Rust Programming Language

第一步按照工具链

install curl--需要这个工具
https://blog.csdn.net/lyh458/article/details/120263185
sudo snap install curl
--cannot work 
sudo snap remove curl
sudo apt install curl

install rust安装rust
sudo curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
...
 stable-x86_64-unknown-linux-gnu installed - rustc 1.59.0 (9d1b2106e 2022-02-23)

Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source $HOME/.cargo/env
如果是公司内网,参考:

if proxy:
https://zhuanlan.zhihu.com/p/308452799
# 用于更新 toolchain
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
# 用于更新 rustup
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
export https_proxy=proxy.xx.xx.xx:80
export http_proxy=proxy.xx.xx.xx:80
然后检查版本

$ rustc --version
rustc 1.59.0 (9d1b2106e 2022-02-23)
$ rustup show
Default host: x86_64-unknown-linux-gnu
rustup home:  /home/???/.rustup
stable-x86_64-unknown-linux-gnu (default)
rustc 1.59.0 (9d1b2106e 2022-02-23)
建立一个新项目

$ cargo new scrape_url
     Created binary (application) `scrape_url` package

$ cargo run
   Compiling scrape_url v0.1.0 (/home/zxl/rust/scrape_url)
    Finished dev [unoptimized + debuginfo] target(s) in 1.06s
     Running `target/debug/scrape_url`
Hello, world!
第一个hello world!程序就运行成功了!

当然还要学习一下包依赖:

代码参考:GitHub - tyrchen/geektime-rust: 我的极客时间 Rust 课程的代码仓库,随课程更新

rust用toml文件管理,所以在vscode中加入插件:Better toml: toml文件语法高亮

Cargo.toml文件中增加新的依赖

[dependencies]
reqwest = { version = "0.11", default-features = false, features = ["rustls-tls", "blocking"] }
html2md = "0.2"
然后改写main.rs: 这个程序的意思是下载rust网站的首页并转换成markdown格式存放到本地文件

use std::fs;
fn main() {
let url = "https://www.rust-lang.org/";
let output = "rust.md";
println!("Fetching url: {}", url);
let body = reqwest::blocking::get(url).unwrap().text().unwrap();
println!("Converting html to markdown...");
let md = html2md::parse_html(&body);
fs::write(output, md.as_bytes()).unwrap();
println!("Converted markdown has been saved in {}.", output);
}

https://github.com/tyrchen/geektime-rust/blob/master/03_grammar/scrape_url/src/main.rs

$ cargo run
    Blocking waiting for file lock on package cache
阻塞了,应该是网络出了问题

rm .package-cache --可以了
cargo run
    Updating crates.io index
       Fetch [                         ]   1.46%, 474.82KiB/s

error: failed to get `html2md` as a dependency of package `scrape_url v0.1.0 (/home/???/rust/scrape_url)`
SSL error: unknown error; class=Ssl (16)
下载不顺利,改为国内服务器

export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup

......

Compiling phf_codegen v0.8.0
   Compiling string_cache_codegen v0.5.1
   Compiling h2 v0.3.11
   Compiling markup5ever v0.10.1
   Compiling html5ever v0.25.1
   Compiling xml5ever v0.16.2
   Compiling hyper v0.14.17
   Compiling markup5ever_rcdom v0.1.0
   Compiling html2md v0.2.13
   Compiling hyper-rustls v0.23.0
   Compiling reqwest v0.11.9
   Compiling scrape_url v0.1.0 (/home/zxl/rust/scrape_url)
    Finished dev [unoptimized + debuginfo] target(s) in 2m 44s
     Running `target/debug/scrape_url`
Fetching url: https://www.rust-lang.org/
Converting html to markdown...
Converted markdown has been saved in rust.md.

运行成功!后续有时间研究一下RUST语法。2022年掌握一门新语言。

初学RUST-让程序跑起来相关推荐

  1. SSH第一步:让自己的程序跑起来

    终于在N久之后,开始我的SSH学习了,仅跟大家分享! 个人觉着学习写程序,兴趣是一方面,成就感也是一方面,成就感有了,自然而然慢慢就有了兴趣. 所以SSH第一步,让自己的程序跑起来,跟所有的程序起步一 ...

  2. 困扰一周的奇葩bug:重复相似代码多,导致单片机程序跑飞

    今天是个好日子,困扰一周的bug终于解决了,迫不及待将这个奇葩问题分享给各位朋友~ 硬件环境: 国产MCU:华大HC32L130 问题描述: 最近做一款基于Modbus协议的三通道温度采集模块,程序设 ...

  3. 教你如何找到导致程序跑飞的指令

    调试嵌入式程序时,你是否遇到过程序跑飞最终导致硬件异常中断的问题?遇到这种问题是否感觉比较难定位?不知道问题出在哪里,没有办法跟踪?尤其是当别人的程序踩了自己的内存,那就只能哭了:( 今天在论坛上看有 ...

  4. 我的程序跑了60多小时,就是为了让你看一眼JDK的BUG导致的内存泄漏。

    从一个BUG说起 前段时间翻到了一个 JDK 有点意思的 BUG,带大家一起瞅瞅. https://bugs.java.com/bugdatabase/view_bug.do?bug_id=81371 ...

  5. 如果程序跑着跑着就崩溃了,查看内存

    程序跑的时间长就发生中断. 启动任务管理器,选择"进程"选项卡,查看程序的内存. 发现程序运行的过程中内存不断增长. 那么原因可能是运行过程中不断地分配了新的内存而没有释放. 查找 ...

  6. 我的程序跑了 60 多小时,就是为了让你看一眼 JDK 的 BUG 导致的内存泄漏

    来源 | why技术 荒腔走板 大家好,我是 why,老规矩,先来一个简短的荒腔走板,给冰冷的技术文注入一丝色彩. 上面图片中这个正在奔跑的少年,是正在参加校运会的我,那一年我 18 岁,高三. 参加 ...

  7. 单片机长时间程序跑飞_单片机程序跑飞的三种现象、原因及解决方法

    今天在编写单片机程序的时候,由于中断服务程序写的不好,导致单片机程序总是跑飞,最后费了好长时间,花了很大功夫才找到问题原因,由此总结了单片机程序跑飞的三种现象.原因及解决方法. 一.数组越界(数组溢出 ...

  8. MPC5748G开发笔记-----MPC5748G程序跑飞uSDHCDriverIRQHandler

    MPC5748G程序跑飞uSDHCDriverIRQHandler 文章目录 MPC5748G程序跑飞uSDHCDriverIRQHandler 前言 一.跑飞时的状态 二.利用异常中断获取位置 1. ...

  9. 嵌入式开发——程序跑飞原因总结

    前言 在嵌入式软件开发中,程序跑飞是一个比较棘手的问题.为什么说棘手,那是因为当程序跑飞时,往往没有任何错误信息报出来,Log停止的地方通常也不是出现问题的地方,因此这让我们很难定位问题. 基于以上原 ...

最新文章

  1. 1 Orchard 入门篇-Orchard 基本概念
  2. IOS 委托和协议区别和联系 (-)
  3. 数据结构(Data structures)(二):结构体指针
  4. html中高与行高的区别,深入了解css的行高Line Height属性
  5. python字典怎么输出key_python如何调用字典的key
  6. 在vb中使用Iphlpapi.dll获取网络信息(下)
  7. java record用法_JDBM学习八(Record)
  8. 深度学习网络架构(三):VGG
  9. R_差值_拟合_回归_样条
  10. 如何获取kindle资源
  11. 全国计算机等级考试三级数据库知识点总结
  12. ffmpeg学习之路·番外篇之音视频分析常用软件介绍与分享
  13. 微信公众号报错40125
  14. 在unity商店中寻找资源_Unity资产商店:五月疯狂促销活动正在进行中!
  15. SQLSERVER Agent服务无法启动
  16. 高通Android display分析【转】
  17. 关于创新创业的书,看这两本就够了
  18. 阅读Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition(CVPR2020)
  19. docker搭建 JRebel 验证服务器 和 IDEA 验证服务器
  20. http409 415报错原因

热门文章

  1. python3-基础篇-02-输入输出、注释
  2. 三国志11威力加强版win7 64bit运行失败解决方法
  3. SQL计算某个字符的出现次数
  4. 电脑桌面宠物java,java 桌面动态宠物
  5. 拉面哥的火爆看新媒体时代的底层逻辑!
  6. Beginning Office 365 Collaboration Apps 免积分下载
  7. 判断MySQL安装是否成功的两种验证方法
  8. SiTime 硅晶振与石英晶振的区别
  9. 2018年最流行的5大开源项目
  10. 让树莓派开机发送自己的ip到邮箱