저는 녹이기 전부터 또는 심지어 베어 메탈에 닿는 이러한 언어에도 완전히 초보자입니다.Rust에서 클로저 유형의 별명을 지정했지만 컴파일러에서 평생 지정자를 묻습니다.
필자는 몇 가지 포인터를 인수로 취하고 문자열을 반환하는 클로저 형식을 별칭으로 지정하려고했습니다.
pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
을 그리고 컴파일러가 모든 포인터 인수에 대해 평생 지정자를 추가하는 나를 필요합니다 : 최신 구문 (내가 제대로 이해하는 경우)와 함께 내가 쓴
src/helpers.rs:24:26: 24:49 error: missing lifetime specifier [E0106]
src/helpers.rs:24 pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
^~~~~~~~~~~~~~~~~~~~~~~
src/helpers.rs:24:43: 24:48 error: missing lifetime specifier [E0106]
src/helpers.rs:24 pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
^~~~~
src/helpers.rs:24:44: 24:48 error: explicit lifetime bound required
src/helpers.rs:24 pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
^~~~
src/helpers.rs:24:51: 24:58 error: missing lifetime specifier [E0106]
src/helpers.rs:24 pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
^~~~~~~
src/helpers.rs:24:60: 24:69 error: missing lifetime specifier [E0106]
src/helpers.rs:24 pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
^~~~~~~~~
src/helpers.rs:24:61: 24:69 error: wrong number of lifetime parameters: expected 1, found 0 [E0107]
src/helpers.rs:24 pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
^~~~~~~~
src/helpers.rs:24:71: 24:89 error: missing lifetime specifier [E0106]
src/helpers.rs:24 pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
^~~~~~~~~~~~~~~~~~
src/helpers.rs:24:76: 24:89 error: wrong number of lifetime parameters: expected 1, found 0 [E0107]
src/helpers.rs:24 pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
^~~~~~~~~~~~~
src/helpers.rs:24:22: 24:99 error: explicit lifetime bound required
src/helpers.rs:24 pub type HelperDef = Fn<(&HashMap<String, &Show>, &Helper, &Registry, &mut RenderContext), String>;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: aborting due to 9 previous errors
난에 대한 완전히 혼란 스러워요 말을해야 평생 지정자들. 이 기능으로 만 사용자 정의 특성을 정의하여 동일한 기능을 구현할 수 있으며 컴파일러는 이런 방식으로 이러한 포인터에 대해 평생을 요구하지 않습니다. 하지만 공유 폐쇄를 사용하는 것이 API 수준에서 더 아름답다고 생각합니다.
설명해 주셔서 감사합니다. 매우 도움이됩니다. 이 사실을 완전히 이해하려면 시간이 필요합니다. 사방 8 명을 지정하는 것은 악몽 일 수 있습니다. 어쩌면 특성 기반 설계로 다시 전환해야합니다. –
더 높은 평생을 사용하는 것이 더 좋지 않겠습니까? '펍 유형 HelperDef <'a> = for' ','c, 'd,'e, 'f,'g ''h> Fn (& b bashMap, & d 도우미, –
@ FrancisGagné : 이전에는 실제로 그것을 실제로 경험하지 못했습니까? 실제로는 실제로 무엇을 의미합니까? –