Rust程序宏扩展aquamarine提升文档内嵌可视化效果

需积分: 9 0 下载量 54 浏览量 更新于2024-12-27 收藏 221KB ZIP 举报
资源摘要信息:"aquamarine:带有mermade.js的rustdoc内联图" 知识点一:Rust程序宏扩展 Rust程序宏是一种高级特性,允许开发者编写代码来生成代码。Rust中的宏使用了称为"宏-by-example"的语法,它允许你定义宏的模式,并且在编译时进行匹配和展开。宏扩展是宏的一种变体,它提供了一种方式来扩展Rust语言本身。在本例中,Aquamarine作为程序宏扩展,其设计目的是为了改善Rust文档的可视化组件,使得开发人员能够更直观地理解程序结构和数据流程。 知识点二:aquamarine宏 aquamarine宏通过修改文档注释属性来实现功能。具体而言,它会将特定格式的图表代码嵌入到生成的rustdoc HTML页面中。这为Rust文档提供了一种新的展示方式,使得代码注释不仅仅是纯文本,而是包含了图表和流程,这可以有效地帮助开发者更直观地理解代码逻辑。在给定的描述中,通过使用#[cfg_attr(doc, aquamarine::aquamarine)]属性标记,以及在文档字符串中嵌入mermaid代码段,开发者可以将图表内联到他们的文档注释中。 知识点三:mermaid图表语言 mermaid是一种基于文本的图表定义语言,它允许用户通过简单的文本描述来创建图表,而无需借助图形界面。在aquamarine宏的使用中,开发者在Rust的文档注释里嵌入了mermaid代码段,如示例所示: ``` graph LR s([Source]) --> a[[aquamarine]] r[[rustdoc]] --> f([Docs w/ Mermaid!]) subgraph rustc[Rust Compiler] a -. inject mermaid.js .-> r end ``` 这段代码描述了一个流程图,它展示了从源代码(Source)到aquamarine,再到rustdoc的流程,并在Rust编译器的子图中展示了将mermaid.js注入到rustdoc的过程。由于mermaid是用JavaScript实现的,因此可以轻松地在HTML页面中呈现为动态图表。 知识点四:rustdoc工具 rustdoc是Rust提供的官方文档生成工具,它能自动从Rust源代码中的注释生成文档,并将其格式化为易于阅读的HTML格式。rustdoc不仅包括函数、结构体和模块等元素的描述,还能显示代码示例和示例代码的输出。通过aquamarine宏和mermaid的结合使用,rustdoc生成的文档可以包含更加生动和功能丰富的图表,极大地提高了文档的信息密度和易读性。 知识点五:aquamarine与rustc的交互 在描述中的mermaid图表展示了aquamarine与rustc(Rust编译器)之间的关系。从图表可以看出,aquamarine扮演着注入mermaid.js的角色,而rustdoc作为接收方,展示了带有Mermaid图表的文档。这种交互模型表明,aquamarine宏的工作是集成额外的可视化工具到现有的编译和文档过程中,使得开发者在使用rustdoc时,可以获得更加丰富的文档体验。 知识点六:Rust编程语言标签 Rust是一种系统编程语言,以安全、并发和性能为设计核心。它广泛应用于开发各种需要高性能和底层系统访问的场景,比如操作系统、嵌入式设备、网络服务和游戏引擎等。Rust社区不断地推动各种工具和扩展来丰富Rust生态系统,aquamarine宏扩展就是这样的一个例子,它通过增加内联图表的能力,提升了Rust文档的实用性和可视性。 知识点七:压缩包子文件的文件名称列表中的含义 在文件名称列表中出现的"aquamarine-master"表明了提供aquamarine宏的代码库版本。在Git这样的版本控制系统中,"master"通常指的是默认的开发分支。因此,"aquamarine-master"很可能是指包含了aquamarine宏源代码的Git仓库主分支的压缩文件。通过分析和学习这个文件,开发者可以了解如何在自己的Rust项目中集成和使用aquamarine宏,以丰富他们的文档。 总结以上知识点,我们了解到aquamarine宏作为一种Rust程序宏扩展,通过与mermaid图表语言的结合使用,极大地增强了rustdoc文档的可视化能力。这种结合不仅让文档更加直观,还有助于其他开发者更好地理解项目结构和流程。Rust社区通过这些创新工具的开发,持续提升了Rust作为系统编程语言的开发效率和文档质量。

def unzip_infer_data(src_path,target_path): ''' 解压预测数据集 ''' if(not os.path.isdir(target_path)): z = zipfile.ZipFile(src_path, 'r') z.extractall(path=target_path) z.close() def load_image(img_path): ''' 预测图片预处理 ''' img = Image.open(img_path) if img.mode != 'RGB': img = img.convert('RGB') img = img.resize((224, 224), Image.BILINEAR) img = np.array(img).astype('float32') img = img.transpose((2, 0, 1)) # HWC to CHW img = img/255 # 像素值归一化 return img infer_src_path = '/home/aistudio/data/data55032/archive_test.zip' infer_dst_path = '/home/aistudio/data/archive_test' unzip_infer_data(infer_src_path,infer_dst_path) para_state_dict = paddle.load("MyCNN") model = MyCNN() model.set_state_dict(para_state_dict) #加载模型参数 model.eval() #验证模式 #展示预测图片 infer_path='data/archive_test/alexandrite_6.jpg' img = Image.open(infer_path) plt.imshow(img) #根据数组绘制图像 plt.show() #显示图像 #对预测图片进行预处理 infer_imgs = [] infer_imgs.append(load_image(infer_path)) infer_imgs = np.array(infer_imgs) label_dic = train_parameters['label_dict'] for i in range(len(infer_imgs)): data = infer_imgs[i] dy_x_data = np.array(data).astype('float32') dy_x_data=dy_x_data[np.newaxis,:, : ,:] img = paddle.to_tensor (dy_x_data) out = model(img) lab = np.argmax(out.numpy()) #argmax():返回最大数的索引 print("第{}个样本,被预测为:{},真实标签为:{}".format(i+1,label_dic[str(lab)],infer_path.split('/')[-1].split("_")[0])) print("结束") 以上代码进行DNN预测,根据这段代码写一段续写一段利用这个模型进行宝石预测的GUI界面,其中包含预测结果是否正确的判断功能

2023-05-25 上传