Is it possible to create a type alias that has trait bounds on a generic type for a function?
This code:
pub type Foo<T: Read> = fn(bar: T);
yields error E0122 (in newer versions of Rust, it is only a warning):
An attempt was made to add a generic constraint to a type alias. This
constraint is entirely ignored. For backwards compatibility, Rust
still allows this with a warning. Consider the example below:
trait Foo {}
type MyType<R: Foo> = (R, ());
fn main() {
let t: MyType<u32>;
}
We're able to declare a variable of type
MyType<u32>, despite the fact
thatu32does not implementFoo. As a result, one should avoid using
generic constraints in concert with type aliases.
Is it possible to create a type alias that contains trait requirements on a function pointer? Obviously the compiler is telling me no for types, but didn't know if there was another option for functions that I wasn't thinking of.
generics rust function-pointers traits type-alias
add a comment |
This code:
pub type Foo<T: Read> = fn(bar: T);
yields error E0122 (in newer versions of Rust, it is only a warning):
An attempt was made to add a generic constraint to a type alias. This
constraint is entirely ignored. For backwards compatibility, Rust
still allows this with a warning. Consider the example below:
trait Foo {}
type MyType<R: Foo> = (R, ());
fn main() {
let t: MyType<u32>;
}
We're able to declare a variable of type
MyType<u32>, despite the fact
thatu32does not implementFoo. As a result, one should avoid using
generic constraints in concert with type aliases.
Is it possible to create a type alias that contains trait requirements on a function pointer? Obviously the compiler is telling me no for types, but didn't know if there was another option for functions that I wasn't thinking of.
generics rust function-pointers traits type-alias
1
This doesn't seem to be possible, as the error says. Experimenting withFn(T)as well didn't get me anywhere.
– Chris Emerson
Jun 17 '16 at 8:25
add a comment |
This code:
pub type Foo<T: Read> = fn(bar: T);
yields error E0122 (in newer versions of Rust, it is only a warning):
An attempt was made to add a generic constraint to a type alias. This
constraint is entirely ignored. For backwards compatibility, Rust
still allows this with a warning. Consider the example below:
trait Foo {}
type MyType<R: Foo> = (R, ());
fn main() {
let t: MyType<u32>;
}
We're able to declare a variable of type
MyType<u32>, despite the fact
thatu32does not implementFoo. As a result, one should avoid using
generic constraints in concert with type aliases.
Is it possible to create a type alias that contains trait requirements on a function pointer? Obviously the compiler is telling me no for types, but didn't know if there was another option for functions that I wasn't thinking of.
generics rust function-pointers traits type-alias
This code:
pub type Foo<T: Read> = fn(bar: T);
yields error E0122 (in newer versions of Rust, it is only a warning):
An attempt was made to add a generic constraint to a type alias. This
constraint is entirely ignored. For backwards compatibility, Rust
still allows this with a warning. Consider the example below:
trait Foo {}
type MyType<R: Foo> = (R, ());
fn main() {
let t: MyType<u32>;
}
We're able to declare a variable of type
MyType<u32>, despite the fact
thatu32does not implementFoo. As a result, one should avoid using
generic constraints in concert with type aliases.
Is it possible to create a type alias that contains trait requirements on a function pointer? Obviously the compiler is telling me no for types, but didn't know if there was another option for functions that I wasn't thinking of.
generics rust function-pointers traits type-alias
generics rust function-pointers traits type-alias
edited Dec 30 '18 at 0:15
Shepmaster
151k14296433
151k14296433
asked Jun 17 '16 at 0:14
nathansizemorenathansizemore
1,37522346
1,37522346
1
This doesn't seem to be possible, as the error says. Experimenting withFn(T)as well didn't get me anywhere.
– Chris Emerson
Jun 17 '16 at 8:25
add a comment |
1
This doesn't seem to be possible, as the error says. Experimenting withFn(T)as well didn't get me anywhere.
– Chris Emerson
Jun 17 '16 at 8:25
1
1
This doesn't seem to be possible, as the error says. Experimenting with
Fn(T) as well didn't get me anywhere.– Chris Emerson
Jun 17 '16 at 8:25
This doesn't seem to be possible, as the error says. Experimenting with
Fn(T) as well didn't get me anywhere.– Chris Emerson
Jun 17 '16 at 8:25
add a comment |
1 Answer
1
active
oldest
votes
At this time, it does not seem to be possible and no workarounds exist.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f37871267%2fis-it-possible-to-create-a-type-alias-that-has-trait-bounds-on-a-generic-type-fo%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
At this time, it does not seem to be possible and no workarounds exist.
add a comment |
At this time, it does not seem to be possible and no workarounds exist.
add a comment |
At this time, it does not seem to be possible and no workarounds exist.
At this time, it does not seem to be possible and no workarounds exist.
answered Jun 20 '16 at 18:14
nathansizemorenathansizemore
1,37522346
1,37522346
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f37871267%2fis-it-possible-to-create-a-type-alias-that-has-trait-bounds-on-a-generic-type-fo%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
This doesn't seem to be possible, as the error says. Experimenting with
Fn(T)as well didn't get me anywhere.– Chris Emerson
Jun 17 '16 at 8:25