컨텍스트 : 다른 함수로 함수를 매개 변수화하려고 시도하고 정적으로 해결하려고합니다. 한눈에 Fn
특성 경계가 내 필요와 일치하는 것 같습니다. 나는했습니다UFCS : T :: 메서드 해결
fn binop<T,Op:Fn<(T,T),T>>(op: Op, a:T, b:T) -> T {
// [...]
op.call((a,b))
}
fn addx(a: f64, b: f64) -> f64 {
binop(f64::add, a, b)
// ^~~~~~~~ error: unresolved name `f64::add`.
}
fn main() {
addx(1.0, 2.0);
}
: 나는 "래퍼"가 될 것으로 예상 무엇
잘 보인다 (지금까지), I는 그러나 심하게 단지 지정 방식에 갇혀있어 내가 전달하고 싶습니다 UFCS RFC에서 힌트를 찾고 "무작위로"지정 변종 (최대 std::ops::Add::add
을 참조하고 작업을 수행하는 일부 마법 추론에 호핑)까지 시도했지만 옳았습니다. 해상도 메커니즘에 대한 모든 도움 (/ 포인터)을 많이 주시면 감사하겠습니다.
감사!
ICE에서 비슷한 문제가 있다고보고했습니다. https://github.com/rust-lang/rust/issues/18501 – pao
[# 18061] (https://github.com/rust-lang/rust/)에서 수정되었습니다. issues/18061), 당신의 예제는 이제 작동합니다. 감사. – pao