특정 유형에 대한 특성을 구현하는 제네릭 유형에 대한 특성 구현

iFreilicht

이 질문의 제목은 많은 관련 질문과 매우 유사하지만이 특정 문제를 논의하는 질문을 찾지 못했습니다.

나는이 Color매우 간단하게 다음과 같이 정의된다 종류 :

pub struct Color {
    red: u8,
    green: u8,
    blue: u8,
}

이제 다른 라이브러리와 인터페이스하고 고정 소수점 숫자로 변환하기 위해이를 임의의 숫자 유형을 포함하는 튜플간에 변환 할 수 있으면 유용합니다.

이를 위해 상자를 사용 합니다Az . 특성을 정의하고 Cast<T>많은 유형에 대해 구현 From<(T, T, T)>하므로 다음과 같이 구현할 수 있습니다.

use az::Cast;
impl<T: Cast<u8>> From<(T, T, T)> for Color {
    fn from(components: (T, T, T)) -> Color {
        Color {
            red: Cast::cast(components.0),
            green: Cast::cast(components.1),
            blue: Cast::cast(components.2),
        }
    }
}

특성 경계는 나에게 Cast::<u8>::cast(T)기능을 제공 하므로 모든 것이 예상대로 작동합니다.

그러나 그 반대의 구현 방법을 찾지 못하는 것 같습니다 From<Color>. 내가 효과적으로 원하는 것은 다음과 같습니다.

impl<T> From<Color> for (T, T, T)
where
    impl Cast<T> for u8 // This doesn't actually work
{
    fn from(color: Color) -> (T, T, T) {
        (
            Cast::cast(color.red),
            Cast::cast(color.green),
            Cast::cast(color.blue),
        )
    }
}

그러나 실제로 이것을 작성하는 방법을 찾지 못하는 것 같습니다. bounds 에 대한 문서를 확인 했지만 이것을 표현할 수있는 구문을 찾을 수없는 것 같습니다.

어떻게 구현할 수 있습니까?

Aplet123

당신은 가깝습니다. 경계는 일반 경계와 동일한 구문을 사용합니다.

impl<T> From<Color> for (T, T, T)
where
    // u8 must implement Cast<T>
    u8: Cast<T>,
{
    fn from(color: Color) -> (T, T, T) {
        (
            Cast::cast(color.red),
            Cast::cast(color.green),
            Cast::cast(color.blue),
        )
    }
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

제네릭 특성에 대한 구문

분류에서Dev

Rust : 관련 유형에 대한 "From"특성 구현 (오류)

분류에서Dev

기본 유형 (float)에 대한 특성 구현

분류에서Dev

특정 유형에 대한 사용자 정의 구현을 작성하려면 어떻게합니까?

분류에서Dev

한 번에 여러 개의 새로운 유형에 대한 특성 구현

분류에서Dev

특성을 구현하는 유형에 대한 참조가있는 함수를 호출 할 수 없습니다.

분류에서Dev

dyn Fns에 대한 특성 구현

분류에서Dev

eslint에 대한 OS 특정 구성을 유지하는 방법

분류에서Dev

제네릭 유형이있는 여러 특성에 대한 유형 앨리어싱

분류에서Dev

하나를 제외하고 인터페이스를 구현하는 모든 유형에 대해 특정 속성 구성이 있습니다.

분류에서Dev

특정 제네릭 기본 유형을 구현하는 모든 속성 가져 오기

분류에서Dev

제네릭 함수에 대한 특성 관련 유형에 유형 제약 조건 적용

분류에서Dev

제네릭 유형에 대한 ninject 공급자 구현

분류에서Dev

Java 기반 구성을 사용하여 Spring의 지속성 계층에 대한 Autowire 특정 구현

분류에서Dev

표현식 내에 유형 주석에 대한 구문이 있습니까? (사용 사례 예 : 기본 특성)

분류에서Dev

Kubernetes의 특정 네임 스페이스에 대한 메트릭 스크랩을 무시하는 Prometheus 구성

분류에서Dev

내 특정 문제에 대한 전략 패턴 구현

분류에서Dev

강제 제네릭은 TypeScript에서 속성을 구현합니다 (제네릭에 대한 제한).

분류에서Dev

특정 JSON 형식에 대한 Python 구문 분석기 생성

분류에서Dev

제네릭의 지정되지 않은 유형이 비 제네릭 메서드에 대한 유형 안전성을 파괴하는 이유

분류에서Dev

Option <T> 및 Option <& T>에 대한 특성 구현

분류에서Dev

특정 유형의 객체를 반환하기 위해 Swift에 대한 제네릭 유형 별칭을 어떻게 정의합니까?

분류에서Dev

특정 유형에 대한 Rails4 다형성 관계

분류에서Dev

사소한 유형에 대한 유형 특성

분류에서Dev

리플렉션을 사용하여 다른 제네릭 유형에 대해 동일한 기능 구현

분류에서Dev

C # 제네릭 : 컴파일러는 서로 다른 참조 유형에 대해 하나의 특수 제네릭 유형 만 생성합니까?

분류에서Dev

유형을 지정할 때 특성에 대한 해석되지 않은 이름 (<유형을 특성으로>)

분류에서Dev

메서드 체이닝에 적합한 구현 유형을 Groovy 특성으로 반환 할 수 있습니까?

분류에서Dev

복제 가능 유형 및 복사 가능 유형 모두에 대한 특성

Related 관련 기사

  1. 1

    제네릭 특성에 대한 구문

  2. 2

    Rust : 관련 유형에 대한 "From"특성 구현 (오류)

  3. 3

    기본 유형 (float)에 대한 특성 구현

  4. 4

    특정 유형에 대한 사용자 정의 구현을 작성하려면 어떻게합니까?

  5. 5

    한 번에 여러 개의 새로운 유형에 대한 특성 구현

  6. 6

    특성을 구현하는 유형에 대한 참조가있는 함수를 호출 할 수 없습니다.

  7. 7

    dyn Fns에 대한 특성 구현

  8. 8

    eslint에 대한 OS 특정 구성을 유지하는 방법

  9. 9

    제네릭 유형이있는 여러 특성에 대한 유형 앨리어싱

  10. 10

    하나를 제외하고 인터페이스를 구현하는 모든 유형에 대해 특정 속성 구성이 있습니다.

  11. 11

    특정 제네릭 기본 유형을 구현하는 모든 속성 가져 오기

  12. 12

    제네릭 함수에 대한 특성 관련 유형에 유형 제약 조건 적용

  13. 13

    제네릭 유형에 대한 ninject 공급자 구현

  14. 14

    Java 기반 구성을 사용하여 Spring의 지속성 계층에 대한 Autowire 특정 구현

  15. 15

    표현식 내에 유형 주석에 대한 구문이 있습니까? (사용 사례 예 : 기본 특성)

  16. 16

    Kubernetes의 특정 네임 스페이스에 대한 메트릭 스크랩을 무시하는 Prometheus 구성

  17. 17

    내 특정 문제에 대한 전략 패턴 구현

  18. 18

    강제 제네릭은 TypeScript에서 속성을 구현합니다 (제네릭에 대한 제한).

  19. 19

    특정 JSON 형식에 대한 Python 구문 분석기 생성

  20. 20

    제네릭의 지정되지 않은 유형이 비 제네릭 메서드에 대한 유형 안전성을 파괴하는 이유

  21. 21

    Option <T> 및 Option <& T>에 대한 특성 구현

  22. 22

    특정 유형의 객체를 반환하기 위해 Swift에 대한 제네릭 유형 별칭을 어떻게 정의합니까?

  23. 23

    특정 유형에 대한 Rails4 다형성 관계

  24. 24

    사소한 유형에 대한 유형 특성

  25. 25

    리플렉션을 사용하여 다른 제네릭 유형에 대해 동일한 기능 구현

  26. 26

    C # 제네릭 : 컴파일러는 서로 다른 참조 유형에 대해 하나의 특수 제네릭 유형 만 생성합니까?

  27. 27

    유형을 지정할 때 특성에 대한 해석되지 않은 이름 (<유형을 특성으로>)

  28. 28

    메서드 체이닝에 적합한 구현 유형을 Groovy 특성으로 반환 할 수 있습니까?

  29. 29

    복제 가능 유형 및 복사 가능 유형 모두에 대한 특성

뜨겁다태그

보관