Recommended way for creating a wrapper class in Rust
还没有人认领这个 Issue。
评估
调研方向
首先阅读 PyReadonlyArray2 API 以及 issue 中展示的 Rust 包装器构造函数,重点关注所有权和生命周期要求。完成后应得到一种有文档说明的安全方法,用于在不进行复制的情况下包装 Python NumPy 数组,包括如何处理 f32 dtype 和行布局。
由索引模型根据 Issue 内容生成。
描述
Hey, I want to write some Rust algorithms that operate on a numpy array that was created in python. E.g.:
arr = np.ones((1000, 768))
dataset = MyRustWrapper(arr) # Rust wrapper class
idx = 199
dataset.get_nearest_neighbor(idx)
Because the array is quite big, I would like to avoid copying the data and just wrap a Array2<f32> that is passed from python.
But how can I take a Array2<f32> and pass it into the fn new of the Rust struct? I only managed to get this working, by extenting the lifetime of new<'py>(arr: PyReadonlyArray2<'py, f32>) -> PyResult<Self> to 'static with unsafe which is likely incorrect:
struct MyRustWrapper(PyReadonlyArray2<'static, f32>)
impl MyRustWrapper {
fn new<'py>(arr: PyReadonlyArray2<'py, f32>) -> PyResult<Self>{
Self(unsafe { std::mem::transmute(arr) })
}
}
Also on a sidenote, how can I make sure that the rows of the numpy array are all f32 and are laid out as slices in memory?
Thanks in advance for any help.
- 主要语言
- Rust
- 星标
- 1.4k
- 派生
- 141
- 平均合并
- 16 分钟
- 30 天内合并 PR
- 3
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
PyO3/rust-numpy 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 65/100
PyO3/rust-numpy#565 · 1 条评论 ·
-
难度 3/5 1-2 天 新手友好度 58/100
PyO3/rust-numpy#563 ·
-
难度 3/5 1-2 天 新手友好度 56/100
PyO3/rust-numpy#557 ·
-
难度 3/5 1-2 天 新手友好度 45/100
PyO3/rust-numpy#547 · 2 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 20/100
PyO3/rust-numpy#535 ·
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 76/100
-
bug good first issue package: quic
难度 2/5 1-3 小时 新手友好度 78/100
-
难度 1/5 1 小时以内 新手友好度 78/100
-
`dora trace view` sends a non-canonical full UUID as-is, so a valid trace ID shows "No spans found" 未关闭cli coordinator rust
难度 2/5 1-3 小时 新手友好度 88/100
-
area: tasks enhancement good first issue help wanted
难度 2/5 1-3 小时 新手友好度 88/100
Jason-jo17/Polybench#15 · 1 条评论 ·