首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust日报】2021-10-04 RillRate 大型 Yew 应用揭晓

【Rust日报】2021-10-04 RillRate 大型 Yew 应用揭晓

作者头像
MikeLoveRust
发布2021-10-19 14:23:47
6080
发布2021-10-19 14:23:47
举报

大型 Yew 应用揭晓: 所有的 RillRate 资源均可使用

RillRate是一个将实时网络仪表盘嵌入到你的应用程序中的库。

RillRate 周一发布了前端的所有资源(由Yew制作)!并将许可完全改为Apache-2.0:前端和后端。

你可以在这里看到Yew应用程序的资源:https://github.com/rillrate/rillrate/tree/trunk/pkg-dashboard

它包括2个crate:

  • rate-ui -小部件基础和连接代理
  • rate-app -仪表盘

原文链接: https://github.com/rillrate/rillrate

Poem 0.8 版本发布

Poem是一个功能齐全且易于使用的web框架,使用Rust编程语言。

use poem::{handler, listener::TcpListener, route, route::get, web::Path, Server};

#[handler]
fn hello(Path(name): Path<String>) -> String {
    format!("hello: {}", name)
}

#[tokio::main]
async fn main() -> Result<(), std::io::Error> {
    let app = route().at("/hello/:name", get(hello));
    let listener = TcpListener::bind("127.0.0.1:3000");
    let server = Server::new(listener).await?;
    server.run(app).await
}

openapi 例子

use poem::{listener::TcpListener, route};
use poem_openapi::{payload::PlainText, OpenApi, OpenApiService};

struct Api;

#[OpenApi]
impl Api {
    #[oai(path = "/hello", method = "get")]
    async fn index(
        &self,
        #[oai(name = "name", in = "query")] name: Option<String>,
    ) -> PlainText<String> {
        match name {
            Some(name) => PlainText(format!("hello, {}!", name)),
            None => PlainText("hello!".to_string()),
        }
    }
}

#[tokio::main]
async fn main() -> Result<(), std::io::Error> {
    let listener = TcpListener::bind("127.0.0.1:3000");
    let api_service = OpenApiService::new(Api)
        .title("Hello World")
        .server("http://localhost:3000/api");
    let ui = api_service.swagger_ui("http://localhost:3000");

    poem::Server::new(listener)
        .await?
        .run(route().nest("/api", api_service).nest("/", ui))
        .await
}

原文链接: https://www.reddit.com/r/rust/comments/q0d588/poem_08_released/

doku: 0.10 发布

Doku是一个框架,可以直接从代码中构建美观的、人类可读的文档;它允许您轻松地为配置文件、HTTP端点等生成文档。

告别陈旧的手写文档——使用Doku,代码就是文档!

use doku::Document;
use serde::Deserialize;

#[derive(Deserialize, Document)]
struct Config {
    /// Database's engine
    db_engine: DbEngine,

    /// Database's host
    #[doku(example = "localhost")]
    db_host: String,

    /// Database's port
    #[doku(example = "5432")]
    db_port: usize,
}

#[derive(Deserialize, Document)]
enum DbEngine {
    #[serde(rename = "pgsql")]
    PostgreSQL,

    #[serde(rename = "mysql")]
    MySQL,
}

fn main() {
    println!("{}", doku::to_json::<Config>());
}

结果

{
    // Database's engine
    "db_engine": "pgsql" | "mysql",
    // Database's host
    "db_host": "localhost",
    // Database's port
    "db_port": 5432
}

github 地址: https://github.com/anixe/doku

--

From 日报小组 BobQin,FBI小白

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大型 Yew 应用揭晓: 所有的 RillRate 资源均可使用
  • Poem 0.8 版本发布
  • doku: 0.10 发布
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档