当前位置: 首页 > news >正文

【rust】 基于rust编写wasm,实现markdown转换为html文本

文章目录

    • 背景
    • 转换预览
    • 核心代码
    • 前置依赖
      • rustup换源
    • cargo本地路径修改(可选)
      • cargo换源中科大
    • wasm-pack安装

背景

尝试用rust编写一款markdown转html的插件,通过wasm给html使用,不得不说体积挺小,约200K, 比go的wasm起步2MB看着舒服点。

  • 不过go的配置和换源比较方便。
  • rust需要给rustup, cargo换源, 安装链接器

使用 wasm-pack build --target web打包可生成js和wasm如下(ts可以直接删):
4核的服务器上build总共8秒, 要是去掉wasm-opt估计1秒多搞定,比go还快了。
在这里插入图片描述

转换预览

在这里插入图片描述

核心代码

use wasm_bindgen::prelude::*;
use pulldown_cmark::{Parser, html};#[wasm_bindgen]
pub fn markdown_to_html(markdown: &str) -> String {let mut html_output = String::new();let parser = Parser::new(markdown);html::push_html(&mut html_output, parser);html_output
}

前置依赖

rustup换源

export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"

cargo本地路径修改(可选)

export RUSTUP_HOME= H O M E / o p t / r u s t / r u s t u p e x p o r t C A R G O H O M E = HOME/opt/rust/rustup export CARGO_HOME= HOME/opt/rust/rustupexportCARGOHOME=HOME/opt/rust/cargo

cargo换源中科大

tee > ~/.cargo/config << EOF
[source.crates-io]
replace-with = 'rsproxy'[source.rsproxy]  
registry = "https://rsproxy.cn/crates.io-index"
EOF

wasm-pack安装

wasm-pack build的时候会调用wasm-opt文件, 自动从gayhub下载, 当然有可能下载不下来,原因你懂的。

cargo install wasm-pack

相关文章:

  • 智驭未来·电网负荷智控系统
  • <<迷雾>> 第 2 章 用电来表示数 示例电路
  • 700. 二叉搜索树中的搜索
  • 【JAVA】算法笔记
  • pkg升级导致xfce虚拟终端无法启动甚至xfce挂死无法登入@FreeBSD(未解决)
  • Linux安装JDK及配置环境变量超详细教程
  • C++那些你不得不知道的(2)
  • 3D Slicer医学图像全自动AI分割组合拳-MONAIAuto3DSeg扩展
  • QT--基础
  • C++编程:实现简单的高精度时间日志记录小程序
  • 【ChatGPT】Python 实现计算两线段的变换矩阵
  • 【virtuous】ron与rout的区别
  • css 数字比汉字要靠上
  • DTOF(direct Time-of-Flight,直接飞行时间)
  • 【C++】继承,菱形继承,虚拟继承,组合详解
  • @jsonView过滤属性
  • codis proxy处理流程
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • CSS实用技巧干货
  • export和import的用法总结
  • Linux各目录及每个目录的详细介绍
  • MQ框架的比较
  • Phpstorm怎样批量删除空行?
  • python3 使用 asyncio 代替线程
  • Vue实战(四)登录/注册页的实现
  • vue自定义指令实现v-tap插件
  • XForms - 更强大的Form
  • 浮现式设计
  • 来,膜拜下android roadmap,强大的执行力
  • 聊聊sentinel的DegradeSlot
  • 马上搞懂 GeoJSON
  • 面试总结JavaScript篇
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 思考 CSS 架构
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 走向全栈之MongoDB的使用
  • 《天龙八部3D》Unity技术方案揭秘
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​configparser --- 配置文件解析器​
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​iOS安全加固方法及实现
  • # wps必须要登录激活才能使用吗?
  • #nginx配置案例
  • (~_~)
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (三) diretfbrc详解
  • (算法)大数的进制转换
  • (转)Linux下编译安装log4cxx
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • **CentOS7安装Maven**
  • . ./ bash dash source 这五种执行shell脚本方式 区别