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

【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

http://www.kler.cn/a/321645.html

相关文章:

  • 电商系统开发:Spring Boot框架实战
  • js像循环数组那样循环一个数字,Array.from()
  • 基于汇编语言的贪吃蛇程序
  • 24.11.13 机器学习 特征降维(主成份分析) KNN算法 交叉验证(K-Fold) 超参数搜索
  • 智慧建造-运用Trimble技术将梦幻水族馆变为现实【上海沪敖3D】
  • 【Rust 编程语言工具】rustup-init.exe 安装与使用指南
  • Lab1 Xv6 and Unix utilities
  • 推荐、nlp、算法题等相关复习(0922-0929)
  • 计算机毕业设计宠物领养网站我的发布领养领养用户信息/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序
  • HalconDotNet实现OCR详解
  • 比较 Python Web 框架:Django、FastAPI 和 Flask
  • 如何使用 ChatGPT 生成万字长文?
  • verilog中非阻塞多个if 优先级判断。
  • 介绍与部署 Zabbix 监控系统
  • C#知识|基础知识点巩固拾遗
  • MySQL基础知识(二)
  • FBX福币连续2天破万亿,沪指重回3000点,后续怎么走?
  • 学习Java(三)
  • js发送邮件至指定邮箱功能实现方式和技巧?
  • 【系统架构设计师】专题:软件工程基础
  • 2024年9月27日历史上的今天大事件早读
  • 面向对象的三大特性:封装、继承、多态
  • AI/LLM 大模型入门指南
  • 探索EasyCVR视频融合平台:在视频编解码与转码领域的灵活性优势
  • 2024!再见前端!
  • TypeScript 设计模式之【备忘录模式】