2014-08-28 3 views
2

Это не компилируется:Как указать параметры типа для функций функции, которые не принимают само?

pub trait TheTrait<T> { 
    pub fn without_self() -> T; 
    pub fn with_self(&self) -> T { 
     TheTrait::without_self() 
    } 
} 

, потому что компилятор не может выяснить параметры типа для TheTrait::without_self(). Я хочу что-то вроде TheTrait<T>::without_self(), но я не могу найти синтаксис, который работает. Как указать параметр типа without_self?

+0

возможно дубликат [Вызов статического метода признака от другого статического метода (ржавчины)] (http://stackoverflow.com/questions/24541074/calling-trait-static-method-from-another-static-method -ржавчина) – huon

ответ

3

Если в сигнале функции нет Self или self, это не подлежит вызову, по крайней мере, до тех пор, пока не будет введено значение UFCS. На данный момент вы можете принять Option<Self> в качестве аргумента и позвонить с None::<Self> в качестве рабочего.

pub trait TheTrait<T> { 
    fn without_self(Option<Self>) -> T; 
    fn with_self(&self) -> T { 
     TheTrait::without_self(None::<Self>) 
    } 
} 
Смежные вопросы