# No\_std = true metadata in Cargo.toml

**URL:** <https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684>\
**Category:** cargo\
**Created:** [January 28, 2017, 7:08pm UTC](https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684 "2017-01-28T19:08:13Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![bascule](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/bascule/32/3057_2.png) [@bascule](https://internals.rust-lang.org/u/bascule)\
**Post date:** [January 28, 2017, 7:08pm UTC](https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684/1 "2017-01-28T19:08:13Z")

</div>

I think it would be useful to support a `no_std = true` flag in Cargo.toml, or a similar flag that indicates a crate has a `#![no_std]` compatible mode.

I don’t think this flag needs to have any affect on the build process, or to replace e.g. having an optional `std` feature enabled by-default (perhaps it could, but consider that a non-goal for now).

Instead, I think a `no_std = true` flag would be useful for the following reasons:

- Visually displaying a “no\_std compatible” indication on a crate’s page on [https://crates.io](https://crates.io)
- Enabling [https://crates.io](https://crates.io) search to filter by packages that support no\_std
- cargo could warn if any of your dependencies do not have this flag (clearly there’d be a lot of false positives at first, but eventually it could be quite useful)

Has this been suggested before?

---

<div class="post-metadata">

**Author:** ![sfackler](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/sfackler/32/9_2.png) [@sfackler](https://internals.rust-lang.org/u/sfackler)\
**Post date:** [January 28, 2017, 7:11pm UTC](https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684/2 "2017-01-28T19:11:10Z")

</div>

I think [https://github.com/rust-lang/rfcs/pull/1133](https://github.com/rust-lang/rfcs/pull/1133) might cover something like this?

---

<div class="post-metadata">

**Author:** ![bascule](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/bascule/32/3057_2.png) [@bascule](https://internals.rust-lang.org/u/bascule)\
**Post date:** [January 28, 2017, 7:12pm UTC](https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684/3 "2017-01-28T19:12:51Z")

</div>

Nice! That looks promising

---

<div class="post-metadata">

**Author:** ![newpavlov](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/newpavlov/32/3290_2.png) [@newpavlov](https://internals.rust-lang.org/u/newpavlov)\
**Post date:** [January 29, 2017, 4:15am UTC](https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684/4 "2017-01-29T04:15:56Z")

</div>

I’ve proposed a bit more general concept [here](https://users.rust-lang.org/t/target-os-architecture-environment-as-a-crate-property/7748). Hope something similar will be included into this [RFC](https://github.com/rust-lang/rfcs/pull/1868).

---

<div class="post-metadata">

**Author:** ![bluss](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/bluss/32/2264_2.png) [@bluss](https://internals.rust-lang.org/u/bluss)\
**Post date:** [January 29, 2017, 2:29pm UTC](https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684/5 "2017-01-29T14:29:02Z")

</div>

In the meantime, we can encourage the keyword [`no_std`](https://crates.io/keywords/no_std) for such crates.

---

<div class="post-metadata">

**Author:** ![bascule](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/bascule/32/3057_2.png) [@bascule](https://internals.rust-lang.org/u/bascule)\
**Post date:** [February 7, 2017, 9:47am UTC](https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684/6 "2017-02-07T09:47:47Z")

</div>

Support for categorizing crates in [https://crates.io](https://crates.io) was added shortly after I asked this question. I figured it might be worth adding a category to allow easy browsing of `#![no_std]` crates:

> <https://github.com/rust-lang/crates.io/pull/548>

---

<div class="post-metadata">

**Author:** ![bluss](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/bluss/32/2264_2.png) [@bluss](https://internals.rust-lang.org/u/bluss)\
**Post date:** [February 10, 2017, 11:16pm UTC](https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684/7 "2017-02-10T23:16:38Z")

</div>

[First is either](https://crates.io/categories/no-std) 😉[thanks to @mglagla](https://github.com/bluss/either/pull/10)

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/system/32/14092_2.png) [@system](https://internals.rust-lang.org/u/system)\
**Post date:** [March 25, 2019, 8:27am UTC](https://internals.rust-lang.org/t/no-std-true-metadata-in-cargo-toml/4684/8 "2019-03-25T08:27:48Z")

</div>

Closed on March 25, 2019, 8:27am UTC

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
