failed Send inference with ndarray v0.17 and uom 0.38
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
Direção de pesquisa
Reproduce the minimal example in src/main.rs with Rust 1.98.1, uom 0.38, and ndarray 0.17.2, then compare the result with ndarray 0.16. Read the reported rust-lang/rust issue #162558 alongside ndarray's async and Send-related behavior; done means identifying whether the regression belongs to ndarray or rustc and documenting or fixing the confirmed cause.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
I'm running into a compile error using an Array2uom::si::f64::Length from inside an async function.
Please note this did work with ndarray v0.16.
- rust 1.98.1
- uom v0.38
- ndarray v0.17.2 (NOTE - v0.16 seems to work)
The problem can be isolated into the following minimal example, which I would expect to compile:
use uom::si::f64::Length;
use uom::ConstZero;
use ndarray::Array2;
fn assert_send<T: Send>(_t: T) {}
fn main() {
assert_send(check());
}
async fn check() {
let lengths: Array2<Length> = Array2::from_elem((2, 3), Length::ZERO);
std::future::pending::<()>().await;
println!("{}", lengths[(0, 0)].get::<uom::si::length::meter>());
}
This produces the following compiler error message:
error[E0308]: mismatched types
--> src/main.rs:8:5
|
8 | assert_send(check());
| ^^^^^^^^^^^^^^^^^^^^ one type is more general than the other
|
= note: expected struct `Quantity<..., ..., f64>`
found struct `Quantity<..., ..., f64>`
note: the lifetime requirement is introduced here
--> src/main.rs:5:19
|
5 | fn assert_send<T: Send>(_t: T) {}
| ^^^^
Since it is not clear to me if the problem is on the ndarray or the rustc side I also reported it to rust-lang/rust (#162558).
I have a workaround wrapping the Array2 into a newtype with a at(&self,usize,usize)->Length fn and using that to obtain Length quantities inside the async fn. This comes from a bigger project though (https://github.com/ODIN-fire/odin-rs) where such workarounds are clearly suboptimal since it is highly async.
- Linguagem predominante
- Rust
- Estrelas
- 4.3k
- Forks
- 391
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de rust-ndarray/ndarray
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
rust-ndarray/ndarray#1612 · 1 comentário ·
-
Stack overflow in `triu` Abertabug good first issue
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
rust-ndarray/ndarray#1615 · 1 comentário ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
rust-ndarray/ndarray#1610 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
rust-ndarray/ndarray#1609 ·
-
breaking-change enhancement
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
rust-ndarray/ndarray#1591 · 2 comentários ·
Todas as issues de rust-ndarray/ndarray
Issues semelhantes
-
risk:low runtime status:in-progress type:test
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
zeroclaw-labs/zeroclaw#11023 ·
-
good first issue refactor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
bevyengine/bevy#25861 ·