首页 > 其他分享 >rust + tonic 一些踩坑

rust + tonic 一些踩坑

时间:2024-04-08 09:12:49浏览次数:13  
标签:tonic proto helloworld build path 一些 true rust

Background

这段时间在用Rust写项目,感觉比C++和Go快乐多了。尤其是没有很shit的业务代码和坑的作伴,真的是很快乐。

一些踩坑

  • rust tonic build找不到proto文件
    这个问题很tricky,我在本地用debian的时候用的是tonic给的example那样写的。
tonic_build::compile_protos("proto/helloworld.proto").unwrap();

但是后面需要指定生成代码的存储路径,我就换用了tonic_build::configure

tonic_build::configure()
    .build_server(true)
    .build_client(true)
    .out_dir("src/proto")
    .compile(&["proto/helloworld.proto"], &["proto/"])
    .unwrap();

这个在我电脑上是work的,然而有个问题,等我把代码搬到了aws,就找不到proto文件了。我一开始以为是路径问题,但是我把路径改成绝对路径也不行,那个parser不支持绝对路径。

然后我试了半天,网上没有任何资料,自己也没有发现任何头绪,只能理解为tonic自带的一个bug,毕竟官方的repo的example也build不起来,这个肯定不是我自己的问题。

解决方法:
后面发现既然接受的是个pathbuf类型,而且只执行build.rs这个文件,那么这个文件一定是在runtime内被创建的,那么我直接用pathbuf去读designated path不就好了?

后面发现果然,这个方法work了。因为aws上的cargo好像把我的build.rs拿到了另一个地方编译,所以找不到文件了。哎,这个问题真的是很蛋疼。

    tonic_build::configure()
        .build_server(true)
        .build_client(true)
        .out_dir("src/proto")
        .compile(&[PathBuf::from("absolute_path/project_path/proto/helloworld.proto")], &[PathBuf::from("proto/")])
        .unwrap();

后续

抽到H1b了,下周开始搞codeforces,复健!!!

标签:tonic,proto,helloworld,build,path,一些,true,rust
From: https://www.cnblogs.com/tiany7/p/18120347

相关文章

  • rust安装
    unix安装教程1.终端安装1curl--proto'=https'--tlsv1.2-sSfhttps://sh.rustup.rs|sh 2.安装目录安装之后,需要注意安装目录的问题,笔者遇到的情况是安装后,需要自己自行配置环境变量,才能正常全局使用。通常是安装在家目录下,名字为:.cargo可以通过配置path,设置在......
  • 谷歌 Rust 团队工作效率是 C++ 团队的两倍
    谷歌Rust团队工作效率是C++团队的两倍来源:OSCHINA编辑: 白开水不加糖2024-04-0116:01:00 22国产数据库圈,为啥那么多水货?”谷歌Android工程总监LarsBergstrom在近期举行的RustNation大会上,介绍了该公司将Go或C++编写的项目迁移到Rust语言的......
  • CentOS安装RustDesk自建服务器
    一、安装node.js1、下载并解压[root@VM-8-2-centossrc]#cd/usr/local#下载node文件[root@VM-8-2-centoslocal]#wgethttps://registry.npmmirror.com/-/binary/node/v16.18.1/node-v16.18.1-linux-x64.tar.gz#解压文件[root@VM-8-2-centoslocal]#sudotar-zxvfno......
  • 关于复读机加强版的一些小讨论
    我是复读机,所以复读EIEditorial。本题做\(d=6\)的关键点是注意到\(\omega_6^2=\omega_6-1\)。如何批量生产这种神奇等式呢。事实上,总是可以用成\(\phi(d)\)个\(d\)阶单位根的线性组合表示出所有的\(d\)阶单位根,甚至这是一组最小的基底。具体怎么构造呢?考虑构造\(\p......
  • 信息化系统项目验收阶段的一些注意事项总结分享
    在信息化系统项目的生命周期中,项目验收是确保项目质量、满足客户需求并成功交付的重要环节。作为项目经理,须深知项目验收的复杂性和重要性,以下是我根据过往经验,对信息化系统项目验收注意事项的总结。一、验收过程中需归档的一些主要材料在项目验收过程中,为确保项目的可追溯性和......
  • 关于复杂IT系统项目需求管理的一些经验分享
    在复杂信息化系统的建设过程中,需求管理无疑是项目管理的核心环节之一,对于项目的成功至关重要。在项目实践中,我遇到了不少关于需求管理的问题,也积累了一些解决这些问题的经验和方法。一、需求管理中常见的问题1、需求模糊不清在与客户或业务部门的沟通中,经常会遇到需求表述不明......
  • Power Designer16.5的一些问题及解决方法
    安装及破解可以参考这篇另一位博主的文章PowerDesigner安装详细教程-CSDN博客问题一:如何打开被关闭的工具箱之前笔者曾参考过一些在view里面直接勾选的方法,但因为powerdesigner版本不同不适用对于16.5版本应该采用的方法是鼠标右键单击红圈区域(即灰色部分)单击后出现......
  • 使用POI填充Word文档,一些注意事项以及解决办法
    有这样一个需求:需要将用户输入的数据填写到准备好的Word模版中并提供下载,最终选择POI-tl和POI来完成上述需求。在这个过程中,主要遇到了以下两个问题:1.Word的两个格式doc和docx(两种文件的区别大家可以自行百度了解下),POI并没有提供统一的处理类。分别用HWPFDocument处理doc......
  • Use cases for Rust generics
    Rustprovidesthreemainusagescenariosforgenericparameters,eachwithitsuniquepurposesandadvantages:DelayedBinding:Genericsallowdelayingtheconcretetypebindingofdatastructures,providingflexibilityandcodereusability.Whendefinin......
  • 关于学术论文的一些认识
    1.什么是核心期刊、SCI核心期刊通常是指在特定学科领域内具有一定学术影响力和水平的期刊,经过权威机构认定,并受到学术界和科研机构的认可和重视。这些期刊通常具有严格的审稿制度、高质量的论文和较高的引用率。SCI(ScienceCitationIndex)是科学引文索引,是由美国科学信息研究所......