如何使用另一个板条箱中定义的宏?

2024-01-21

我看过一些使用以下命令创建 Python 模块的教程cpythoncrate,但构建时仍然出现错误:

extern crate cpython;

use cpython::{PyObject, PyResult, Python, PyTuple, PyDict, ToPyObject, PythonObject};

fn add_two(py: Python, args: &PyTuple, _: Option<&PyDict>) -> PyResult<PyObject> {
    match args.as_slice() {
        [ref a_obj, ref b_obj] => {
            let a = a_obj.extract::<i32>(py).unwrap();
            let b = b_obj.extract::<i32>(py).unwrap();
            let mut acc:i32 = 0;

            for _ in 0..1000 {
                acc += a + b;
            }

            Ok(acc.to_py_object(py).into_object())
        },
        _ => Ok(py.None())
    }
}

py_module_initializer!(example, |py, module| {
    try!(module.add(py, "add_two", py_fn!(add_two)));
    Ok(())
});

I get:

error: macro undefined: 'py_module_initializer!'

我在哪里可以得到它?我正在使用 Rust 1.12。


UPD

  1. 需要添加#[macro_use](如答案中所示)
  2. 对于其他错误 - 请参阅例子在这里 http://dgrunwald.github.io/rust-cpython/doc/cpython/macro.py_module_initializer!.html

您可能需要声明cpython如下:

#[macro_use] extern crate cpython;

为了能够使用cpython的宏。您可以咨询其文档中的示例 http://dgrunwald.github.io/rust-cpython/doc/cpython/macro.py_module_initializer!.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用另一个板条箱中定义的宏? 的相关文章

随机推荐

  • 树莓派 pico rfid rc522 (Micropython)

    我想使用 RPi Pico 从 mfrc522 Iduino RFID rc522 读卡器读取数据 但我不知道如何操作 我试图使用为此目的制作的 mfrc522 py MicroPython 库 阅读器正在通过 SPI 与 Pi 通信 我将
  • Eclipse 内容辅助无法识别 std::thread,但可以正确编译

    我运行的是 Ubuntu 14 04 我采取的重现步骤 创建一个新的C 项目 New gt C gt Hello World 项目 我称之为TestStdThread 将主文件中的代码更改为 include
  • Azure AD - 如何以编程方式设置应用程序清单属性(accessTokenAcceptedVersion 为 v2 和signInAudience)?

    有没有办法通过 API 以编程方式将清单属性 accessTokenAcceptedVersion 设置为 2 由于问题已解释 因此需要此操作here https github com AzureAD microsoft authentic
  • 使用特殊情况解析器包装 GraphQL 标量类型

    我有一个特殊的 GraphQL 标量类型表示日期时间的库 https www npmjs com package graphql iso date对象 但是 我有一个情况 从 MySQL 返回值 0000 00 00 00 00 00 这表
  • 无法让 HTTP PUT 请求在 ASP.NET Core 中工作

    我正在尝试更新中的条目game桌子 但是 我在 ASP NET 中的 PUT 请求似乎从未触发 我不明白为什么 这是 ASP NET 中的控制器 Route game update GameID HttpPut public IAction
  • 在 Qt5 中使用文本元素的彩色点

    我写了这个示例代码 import QtQuick 2 0 Rectangle width 360 height 360 Text text qsTr Hello World anchors centerIn parent font pixe
  • 如何省略 128C 条形码中的前导 0?

    例如 如果我将 12345 放入 文本 条形码的属性中 则输出为 012345 这个 0 就是问题所在 我怎样才能删除这个 我正在使用 Delphi 2010 和 FastReport 4 9 72 Code 128C 条形码的位数必须为偶
  • 启动时将程序放入系统托盘

    我遵循了常见链接的技巧来减少系统托盘中的应用程序 http www developer com net csharp article php 3336751 http www developer com net csharp article
  • 将 Junit XML 报告转换为 HTML 形式 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在使用soapui免费版本来生成
  • C# 中的流长度有限制吗?

    我需要以这种方式读取流 using HttpWebResponse response HttpWebResponse request getResponse using Stream answer response getResponseS
  • Pandas 根据函数返回单独的 DataFrame 值

    我有两个数据框 df1是地点的位置和df2是车站的位置 我试图找到一种更有效的方法来应用距离函数来查找哪些车站在一定范围内并返回车站的名称 如果距离函数是纬度差 1这是我的预期结果 df1 Lat Long 0 30 31 1 37 48
  • 如何使用 *ngIf 检查 Angular 2 模板中的空对象

    我想检查我的对象是否为空 不渲染我的元素 这是我的代码 div class comeBack up a previous info title a div 但我的代码是错误的 最好的方法是什么 这应该做你想要的 div class come
  • .NET Gridview 主题示例

    我正在寻找 net gridView 主题 css 文件 的示例 以获得网格的想法 我的网格必须具有双页式外观 底部和顶部 并且应该支持排序 通过单击标题 和移动鼠标时突出显示行 我在网上找到的唯一一款是玻璃黑 http weblogs a
  • 在SBT上使用maven插件

    有没有办法在 SBT 上使用 Maven 插件 不 sbt 确实以有限的方式支持 pom xml 通过sbt pom 阅读器 https github com sbt sbt pom reader 但我们不支持使用maven插件 它有自己的
  • 无法读取黑底白字 Data Matrix 条形码

    iOS 8 中添加了 Data Matrix 条形码支持 如果 Data Matrix 条形码是黑底白字 深色浅色 我可以使用它来读取它们 但是 它永远不会读取黑底白字 浅色深色 条形码 读起来很好 无法阅读此内容 根据 Data Matr
  • 如何格式化 Pandas 数据框的 IPython html 显示?

    如何格式化 Pandas 数据帧的 IPython html 显示 以便 数字右对齐 数字以逗号作为千位分隔符 大浮点数没有小数位 我明白那个numpy有设施set printoptions我可以在哪里做 int frmt lambda x
  • 删除 Jupyter Notebook 的每个单元格行上的播放按钮显示

    我在使用 Jupyterbook 时不小心按下了一些按钮 现在 每个单元格都会显示一个 运行此单元格 播放按钮 图标 这在视觉上会分散注意力 我找不到切换开关 命令来将其关闭 我可以把它关掉吗 您很可能已经升级了notebook打包到版本5
  • 如何获取当前小部件的偏移量

    每当用户按下屏幕时 我就尝试绘制一个小部件 目前 我通过存储小部件列表来做到这一点 当 ontapup 在手势上触发时 我将添加到小部件列表中 Widget build BuildContext context Widget draw ne
  • 路由模型绑定和软删除 - Laravel 4

    当使用软删除和路由到模型绑定时 会出现一种情况 如果注入的模型已被 软删除 则您无法查看该模型 e g 我有一个工作模型 如果我 垃圾 其中一个模型 然后打开垃圾箱并尝试查看作业模型 我会收到 404 未找到资源 我通过使用 Route b
  • 如何使用另一个板条箱中定义的宏?

    我看过一些使用以下命令创建 Python 模块的教程cpythoncrate 但构建时仍然出现错误 extern crate cpython use cpython PyObject PyResult Python PyTuple PyDi