gecko-dev/third_party/rust/memoffset/README.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

55 строки
1.4 KiB
Markdown
Исходник Обычный вид История

Bug 1438892 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel MozReview-Commit-ID: wsncokjtul --HG-- rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-deque/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-deque/LICENSE-MIT rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-epoch/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-epoch/LICENSE-MIT rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-utils/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-utils/LICENSE-MIT rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-0.8.2/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-0.8.2/LICENSE-MIT rename : third_party/rust/rayon/src/iter/README.md => third_party/rust/rayon-0.8.2/src/iter/README.md rename : third_party/rust/rayon/src/iter/internal.rs => third_party/rust/rayon-0.8.2/src/iter/internal.rs rename : third_party/rust/rayon/tests/compile-fail-unstable/future_escape.rs => third_party/rust/rayon-0.8.2/tests/compile-fail-unstable/future_escape.rs rename : third_party/rust/rayon/tests/run-pass/sort-panic-safe.rs => third_party/rust/rayon-0.8.2/tests/run-pass/sort-panic-safe.rs rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-core/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-core/LICENSE-MIT extra : rebase_source : fad67f2d82c7b49554ce9b03fb12da3d4b66a378
2018-02-20 17:05:08 +03:00
# memoffset #
[![](http://meritbadge.herokuapp.com/memoffset)](https://crates.io/crates/memoffset)
C-Like `offset_of` functionality for Rust structs.
Introduces the following macros:
* `offset_of!` for obtaining the offset of a member of a struct.
* `span_of!` for obtaining the range that a field, or fields, span.
`memoffset` works under `no_std` environments.
## Usage ##
Add the following dependency to your `Cargo.toml`:
```toml
[dependencies]
memoffset = "0.3"
Bug 1438892 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel MozReview-Commit-ID: wsncokjtul --HG-- rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-deque/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-deque/LICENSE-MIT rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-epoch/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-epoch/LICENSE-MIT rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-utils/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-utils/LICENSE-MIT rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-0.8.2/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-0.8.2/LICENSE-MIT rename : third_party/rust/rayon/src/iter/README.md => third_party/rust/rayon-0.8.2/src/iter/README.md rename : third_party/rust/rayon/src/iter/internal.rs => third_party/rust/rayon-0.8.2/src/iter/internal.rs rename : third_party/rust/rayon/tests/compile-fail-unstable/future_escape.rs => third_party/rust/rayon-0.8.2/tests/compile-fail-unstable/future_escape.rs rename : third_party/rust/rayon/tests/run-pass/sort-panic-safe.rs => third_party/rust/rayon-0.8.2/tests/run-pass/sort-panic-safe.rs rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-core/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-core/LICENSE-MIT extra : rebase_source : fad67f2d82c7b49554ce9b03fb12da3d4b66a378
2018-02-20 17:05:08 +03:00
```
Versions ">= 0.3" can be used in a constant expression context (though not in a `const fn`),
but require a rust version greater than or equal to 1.33.
These versions will compile fine with rustc versions greater or equal to 1.19, but will
lack support for constant expression.
If you wish to use an older rustc version, lock your dependency to "0.2"
Bug 1438892 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel MozReview-Commit-ID: wsncokjtul --HG-- rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-deque/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-deque/LICENSE-MIT rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-epoch/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-epoch/LICENSE-MIT rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-utils/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-utils/LICENSE-MIT rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-0.8.2/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-0.8.2/LICENSE-MIT rename : third_party/rust/rayon/src/iter/README.md => third_party/rust/rayon-0.8.2/src/iter/README.md rename : third_party/rust/rayon/src/iter/internal.rs => third_party/rust/rayon-0.8.2/src/iter/internal.rs rename : third_party/rust/rayon/tests/compile-fail-unstable/future_escape.rs => third_party/rust/rayon-0.8.2/tests/compile-fail-unstable/future_escape.rs rename : third_party/rust/rayon/tests/run-pass/sort-panic-safe.rs => third_party/rust/rayon-0.8.2/tests/run-pass/sort-panic-safe.rs rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-core/LICENSE-APACHE rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-core/LICENSE-MIT extra : rebase_source : fad67f2d82c7b49554ce9b03fb12da3d4b66a378
2018-02-20 17:05:08 +03:00
Add the following lines at the top of your `main.rs` or `lib.rs` files.
```rust
#[macro_use]
extern crate memoffset;
```
## Examples ##
```rust
#[repr(C, packed)]
struct Foo {
a: u32,
b: u32,
c: [u8; 5],
d: u32,
}
assert_eq!(offset_of!(Foo, b), 4);
assert_eq!(offset_of!(Foo, c[3]), 11);
assert_eq!(span_of!(Foo, a), 0..4);
assert_eq!(span_of!(Foo, a .. c), 0..8);
assert_eq!(span_of!(Foo, a .. c[1]), 0..9);
assert_eq!(span_of!(Foo, a ..= c[1]), 0..10);
assert_eq!(span_of!(Foo, ..= d), 0..14);
assert_eq!(span_of!(Foo, b ..), 4..17);
```