다양한 유형의 선물을 선택하거나 가입하는 방법은 무엇입니까?

아르 템 말린 코

일반적인 비동기 기능이 있습니다. 다른 유형으로 호출하고 결과 미래를 병렬로 실행하고 싶습니다. 그러나 그것은 다른 유형의 미래를 생성하는 것처럼 보입니다 (모두가 impl Future <Output = ()> 임에도 불구하고), 따라서 Vector에 다른 유형의 객체를 넣을 수 없으므로 select 함수를 호출 할 수 없습니다. 내가 의미하는 바는 다음과 같습니다.

use std::fmt::Debug;

#[tokio::main]
async fn main() {
    // both arguments to test function i32. Works.
    let first = Box::pin(test(5));
    let second =  Box::pin(test(6));
    futures::future::select_all(vec![first, second]).await;
}

async fn test<T: Debug>(x: T) {
    async {
        println!("{:?}", x);
    }.await;
}

그리고 이것은 작동하지 않습니다.

use std::fmt::Debug;

#[tokio::main]
async fn main() {
    // one argument to test() is i32, the second argument is &str. Doesn't work
    let first = Box::pin(test(5));
    let second =  Box::pin(test("five"));
    futures::future::select_all(vec![first, second]).await;
}

async fn test<T: Debug>(x: T) {
    async {
        println!("{:?}", x);
    }.await;
}

구체적인 예에서는 두 개의 선물을받는 select를 사용할 수 있지만, 선물이 많은 경우 어떻게해야합니까? 유형이 다른 여러 선물을 어떻게 선택할 수 있습니까?

send9

컴파일러가 올바른 유형을 감지하도록 도와 주면됩니다. 여기서는 키워드 와 함께 동적 디스패치사용 dyn합니다.

use std::fmt::Debug;
use std::pin::Pin;

#[tokio::main]
async fn main() {
    // one argument to test() is i32, the second argument is &str.
    let first = Box::pin(test(5));
    let second = Box::pin(test("five"));
    let v: Vec<Pin<Box<dyn futures::Future<Output = ()>>>> = vec![first, second];
    futures::future::select_all(v).await;
}

async fn test<T: Debug>(x: T) {
    async {
        println!("{:?}", x);
    }
    .await;
}

그래서 제가 한 것은 Vector를 변수로 추출하고 명시적인 유형을 지정하는 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Listview의 두 번째 열에 나열된 선택한 파일을 제거하는 방법은 무엇입니까?

분류에서Dev

다양한 유형의 키에 대한 해시 기능을 구현하는 방법은 무엇입니까?

분류에서Dev

Java, Lambda : 다양한 유형의 여러 목록이있는 클래스에서 목록을 선택하는 방법은 무엇입니까?

분류에서Dev

Solr에서 다양한 문서 유형을 선언하는 방법은 무엇입니까?

분류에서Dev

Solr에서 다양한 문서 유형을 선언하는 방법은 무엇입니까?

분류에서Dev

SQL Server에서 하나의 열만보고 고유 한 값을 선택하는 방법은 무엇입니까?

분류에서Dev

특정 유형의 소품을 선택하는 방법은 무엇입니까?

분류에서Dev

하나의 오디오 채널 만 음소거하거나 선택하는 방법은 무엇입니까?

분류에서Dev

한 값의 양이 다른 값보다 큰 postgresql 행에서 선택하는 방법은 무엇입니까?

분류에서Dev

하나의 JScrollPane에 여러 선택 가능한 이미지를 표시하는 방법은 무엇입니까?

분류에서Dev

Autocomplete Material UI의 버튼을 클릭하면 선택한 값을 제거하는 방법은 무엇입니까?

분류에서Dev

다양한 유형의 변수 스택을 만드는 방법은 무엇입니까?

분류에서Dev

난수로 선택한 jQuery 선택 가능 항목을 정의하는 방법은 무엇입니까?

분류에서Dev

한 번에 하나의 항목을 선택하는 방법은 무엇입니까?

분류에서Dev

고유 한 배열 값을 선택하는 방법은 무엇입니까?

분류에서Dev

pyqt5 QTableWidget에서 선택하거나 클릭 한 셀의 배경색을 변경하는 방법은 무엇입니까?

분류에서Dev

선택한 열의 색상을 변경하는 방법은 무엇입니까?

분류에서Dev

Hive의 복잡한 열에서 제한된 양의 값을 선택하는 방법은 무엇입니까?

분류에서Dev

dataTable 내의 selectOneMenu에서 선택한 항목을 제거하는 방법은 무엇입니까?

분류에서Dev

Telerik의 RadListView에서 선택한 항목을 제거하는 방법은 무엇입니까?

분류에서Dev

어떤 유형의 키가 아닌 객체의 속성을 선택하는 방법은 무엇입니까?

분류에서Dev

DOM 요소를 제거하거나 jQuery의 $ (this) .html ()에서 선택하는 방법은 무엇입니까?

분류에서Dev

다양한 사용자 유형의 인증 토큰을 확인하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

하나를 선택한 직후에 HTML 드롭 다운 "선택"의 값을 사용하는 방법은 무엇입니까?

분류에서Dev

SQL / PostgreSQL : 다른 테이블에 저장된 제한을 기반으로 다른 유형의 제한된 행을 선택하는 방법은 무엇입니까?

분류에서Dev

엄격한 실존 유형을 정의하는 방법은 무엇입니까?

분류에서Dev

선에 닿는 다각형을 유효한 다각형으로 변환하는 방법은 무엇입니까?

분류에서Dev

람다의 반환 유형을 추론하는 방법은 무엇입니까?

분류에서Dev

다른 유형의 배열을 반환하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Listview의 두 번째 열에 나열된 선택한 파일을 제거하는 방법은 무엇입니까?

  2. 2

    다양한 유형의 키에 대한 해시 기능을 구현하는 방법은 무엇입니까?

  3. 3

    Java, Lambda : 다양한 유형의 여러 목록이있는 클래스에서 목록을 선택하는 방법은 무엇입니까?

  4. 4

    Solr에서 다양한 문서 유형을 선언하는 방법은 무엇입니까?

  5. 5

    Solr에서 다양한 문서 유형을 선언하는 방법은 무엇입니까?

  6. 6

    SQL Server에서 하나의 열만보고 고유 한 값을 선택하는 방법은 무엇입니까?

  7. 7

    특정 유형의 소품을 선택하는 방법은 무엇입니까?

  8. 8

    하나의 오디오 채널 만 음소거하거나 선택하는 방법은 무엇입니까?

  9. 9

    한 값의 양이 다른 값보다 큰 postgresql 행에서 선택하는 방법은 무엇입니까?

  10. 10

    하나의 JScrollPane에 여러 선택 가능한 이미지를 표시하는 방법은 무엇입니까?

  11. 11

    Autocomplete Material UI의 버튼을 클릭하면 선택한 값을 제거하는 방법은 무엇입니까?

  12. 12

    다양한 유형의 변수 스택을 만드는 방법은 무엇입니까?

  13. 13

    난수로 선택한 jQuery 선택 가능 항목을 정의하는 방법은 무엇입니까?

  14. 14

    한 번에 하나의 항목을 선택하는 방법은 무엇입니까?

  15. 15

    고유 한 배열 값을 선택하는 방법은 무엇입니까?

  16. 16

    pyqt5 QTableWidget에서 선택하거나 클릭 한 셀의 배경색을 변경하는 방법은 무엇입니까?

  17. 17

    선택한 열의 색상을 변경하는 방법은 무엇입니까?

  18. 18

    Hive의 복잡한 열에서 제한된 양의 값을 선택하는 방법은 무엇입니까?

  19. 19

    dataTable 내의 selectOneMenu에서 선택한 항목을 제거하는 방법은 무엇입니까?

  20. 20

    Telerik의 RadListView에서 선택한 항목을 제거하는 방법은 무엇입니까?

  21. 21

    어떤 유형의 키가 아닌 객체의 속성을 선택하는 방법은 무엇입니까?

  22. 22

    DOM 요소를 제거하거나 jQuery의 $ (this) .html ()에서 선택하는 방법은 무엇입니까?

  23. 23

    다양한 사용자 유형의 인증 토큰을 확인하는 가장 좋은 방법은 무엇입니까?

  24. 24

    하나를 선택한 직후에 HTML 드롭 다운 "선택"의 값을 사용하는 방법은 무엇입니까?

  25. 25

    SQL / PostgreSQL : 다른 테이블에 저장된 제한을 기반으로 다른 유형의 제한된 행을 선택하는 방법은 무엇입니까?

  26. 26

    엄격한 실존 유형을 정의하는 방법은 무엇입니까?

  27. 27

    선에 닿는 다각형을 유효한 다각형으로 변환하는 방법은 무엇입니까?

  28. 28

    람다의 반환 유형을 추론하는 방법은 무엇입니까?

  29. 29

    다른 유형의 배열을 반환하는 방법은 무엇입니까?

뜨겁다태그

보관