hostname-0.3.1/.editorconfig010064400017500001750000000002541355756175500142530ustar0000000000000000root = true [*] end_of_line = lf insert_final_newline = true charset = utf-8 indent_style = space indent_size = 4 trim_trailing_whitespace = true [*.yml] indent_size = 2 hostname-0.3.1/.github/workflows/ci.yml010064400017500001750000000063771357663234500163200ustar0000000000000000on: push name: Continuous integration jobs: lints: name: Lints runs-on: ${{ matrix.os }} strategy: matrix: os: - ubuntu-latest - macOS-latest - windows-latest steps: - uses: actions/checkout@v1 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true components: rustfmt, clippy - name: Run rustfmt uses: actions-rs/cargo@v1 # No need to execute it multiple times if: matrix.os == 'ubuntu-latest' with: command: fmt args: --all -- --check - name: Run clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all-targets --all-features -- -D warnings -A clippy::needless_doctest_main tier1: name: Tier 1 needs: lints runs-on: ${{ matrix.os }} strategy: matrix: os: - ubuntu-latest - macOS-latest - windows-latest toolchain: - 1.19.0 - stable steps: - uses: actions/checkout@v1 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.toolchain }} override: true - name: Check without features uses: actions-rs/cargo@v1 with: command: check - name: Check with all features enabled uses: actions-rs/cargo@v1 with: command: check args: --all-features - name: Run tests if: matrix.toolchain == 'stable' uses: actions-rs/cargo@v1 with: command: test args: --all-features tier2: name: Tier 2 needs: tier1 runs-on: ubuntu-latest strategy: matrix: target: # Solaris - x86_64-sun-solaris # DragonflyBSD # TODO: No std available # - x86_64-unknown-dragonfly # NetBSD - x86_64-unknown-netbsd # Android - arm-linux-androideabi - armv7-linux-androideabi - aarch64-linux-android - i686-linux-android steps: - uses: actions/checkout@v1 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable target: ${{ matrix.target }} override: true - name: Run build uses: actions-rs/cargo@v1 with: use-cross: true command: build args: --all-features tier2_ios: name: Tier 2 (iOS) needs: tier1 runs-on: macOS-latest strategy: matrix: target: - armv7-apple-ios - armv7s-apple-ios - x86_64-apple-ios - aarch64-apple-ios steps: - uses: actions/checkout@v1 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable target: ${{ matrix.target }} override: true - name: Run build uses: actions-rs/cargo@v1 with: use-cross: true command: build args: --all-features hostname-0.3.1/.gitignore010064400017500001750000000000501355752021600135430ustar0000000000000000/target **/target **/*.rs.bk Cargo.lock hostname-0.3.1/.rustfmt.toml010064400017500001750000000002751356010076000142330ustar0000000000000000unstable_features = true edition = "2018" version = "Two" wrap_comments = true comment_width = 80 max_width = 80 merge_imports = false newline_style = "Unix" struct_lit_single_line = false hostname-0.3.1/CHANGELOG.md010064400017500001750000000026131362624210300133640ustar0000000000000000# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.3.1] - 2020-02-28 ### Fixed - Enabling `hostname::set` doctests only if "set" feature is enabled (#10) ## [0.3.0] - 2019-12-19 ### Added - Cargo feature `set` which enables the `hostname::set` function compilation (disabled by default) - Note that `hostname::set` will fail the compilation for Android API < 23 ### Changed - `hostname::set` is available only with Cargo `set` feature enabled - Fix compilation issue for FreeBSD, DragonFlyBSD and iOS targets (#9) - Deprecated function `get_hostname` was removed, use `get` instead ## [0.2.0] - 2019-11-09 ### Added - MSRV policy, Rust 1.19 version is set as minimally supported - `get` function which returns the current hostname (replaces `get_hostname` function) - `set` function which allows to change the hostname ### Changed - Windows implementation returns the DNS host name of local computer instead of the NetBIOS name - Windows implementation works with the Unicode now instead of ANSI encoding ### Fixed - Possible value truncation is handled for *nix implementation (#6) ### Deprecated - `get_hostname` function is deprecated and marked to be removed in the upcoming `0.3.0` version hostname-0.3.1/Cargo.toml.orig010064400017500001750000000014261362624211200144430ustar0000000000000000[package] name = "hostname" version = "0.3.1" description = "Cross-platform system's host name functions" categories = ["api-bindings", "os"] keywords = ["hostname", "gethostname", "sethostname"] authors = [ "fengcen ", "svartalf " ] repository = "https://github.com/svartalf/hostname" readme = "README.md" license = "MIT" [features] default = [] # Enables the `hostname::set` function set = [] [dependencies] match_cfg = "^0.1" [target.'cfg(any(unix, target_os = "redox"))'.dependencies] libc = "^0.2" [target.'cfg(target_os = "windows")'.dependencies] winapi = { version = "^0.3", features = ["sysinfoapi"] } [dev-dependencies] version-sync = "0.8" [package.metadata.docs.rs] features = ["set"] rustdoc-args = ["--cfg", "docsrs"] hostname-0.3.1/Cargo.toml0000644000000024021362624323100107470ustar00# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO # # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies # to registry (e.g., crates.io) dependencies # # If you believe there's an error in this file please file an # issue against the rust-lang/cargo repository. If you're # editing this file be aware that the upstream Cargo.toml # will likely look very different (and much more reasonable) [package] name = "hostname" version = "0.3.1" authors = ["fengcen ", "svartalf "] description = "Cross-platform system's host name functions" readme = "README.md" keywords = ["hostname", "gethostname", "sethostname"] categories = ["api-bindings", "os"] license = "MIT" repository = "https://github.com/svartalf/hostname" [package.metadata.docs.rs] features = ["set"] rustdoc-args = ["--cfg", "docsrs"] [dependencies.match_cfg] version = "^0.1" [dev-dependencies.version-sync] version = "0.8" [features] default = [] set = [] [target."cfg(any(unix, target_os = \"redox\"))".dependencies.libc] version = "^0.2" [target."cfg(target_os = \"windows\")".dependencies.winapi] version = "^0.3" features = ["sysinfoapi"] hostname-0.3.1/LICENSE010064400017500001750000000021041356135117400125620ustar0000000000000000MIT License Copyright (c) 2016 fengcen Copyright (c) 2019 svartalf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. hostname-0.3.1/README.md010064400017500001750000000033561357663305700130570ustar0000000000000000# hostname [![Latest Version](https://img.shields.io/crates/v/hostname.svg)](https://crates.io/crates/hostname) [![Latest Version](https://docs.rs/hostname/badge.svg)](https://docs.rs/hostname) [![Build Status](https://github.com/svartalf/hostname/workflows/Continuous%20integration/badge.svg)](https://github.com/svartalf/hostname/actions) ![Minimum rustc version](https://img.shields.io/badge/rustc-1.19+-green.svg) ![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg) ![Crates.io](https://img.shields.io/crates/d/hostname) > Cross-platform system's host name functions in Rust ## Supported platforms * [POSIX-compliant](https://en.wikipedia.org/wiki/POSIX#POSIX-oriented_operating_systems) systems\ (Linux, macOS, Android, FreeBSD, OpenBSD, NetBSD, Solaris, Redox, and so on) * Windows ## Rust version requirements Since version `0.2.0` this crate requires Rust version `1.19.0` or greater. This version is explicitly tested in CI and may be bumped in any major or minor release as needed.\ Maintaining compatibility with older compilers is a priority though, so the bar for bumping the minimum supported version is set very high. Any changes to the supported minimum version will be called out in the release notes. ## Usage Add the following dependency to your Cargo manifest: ```toml [dependencies] hostname = "^0.3" ``` Crate API provides two simple functions for retrieving and setting the system's host name: ```rust use std::io; fn main() -> io::Result<()> { // Retrieve the hostname dbg!(hostname::get()?); // And set a new one hostname::set("potato")?; Ok(()) } ``` ## License hostname is primarily distributed under the terms of the MIT license ([LICENSE](LICENSE) or http://opensource.org/licenses/MIT). hostname-0.3.1/examples/hostname.rs010064400017500001750000000003061356146267200155670ustar0000000000000000//! Naive re-implementation of the Linux `hostname` program. use std::io; fn main() -> io::Result<()> { let name = hostname::get()?; println!("{}", name.to_string_lossy()); Ok(()) } hostname-0.3.1/src/lib.rs010064400017500001750000000060101362624212600134560ustar0000000000000000//! A crate with utilities to get and set the system's host name. //! //! ## Examples #![cfg_attr( feature = "set", doc = r#" Set and get the host name: ```rust,no_run # use std::io; # use std::ffi::OsStr; # fn try_main() -> io::Result<()> { hostname::set("potato")?; let new_name = hostname::get()?; assert_eq!(new_name, OsStr::new("potato")); # Ok(()) # } # fn main() { # try_main().unwrap(); # } ``` "# )] #![cfg_attr( not(feature = "set"), doc = r#" Get the host name: ```rust,no_run # use std::io; # use std::ffi::OsStr; # fn try_main() -> io::Result<()> { let name = hostname::get()?; println!("{:?}", name); # Ok(()) # } # fn main() { # try_main().unwrap(); # } ``` "# )] #![doc(html_root_url = "https://docs.rs/hostname/0.3.1")] #![deny( unused, unused_imports, unused_features, bare_trait_objects, missing_debug_implementations, missing_docs, nonstandard_style, dead_code, deprecated, rust_2018_idioms, trivial_casts, unused_import_braces, unused_results )] #![allow(unknown_lints, unused_extern_crates)] #[macro_use] extern crate match_cfg; #[cfg(feature = "set")] use std::ffi::OsStr; use std::ffi::OsString; use std::io; match_cfg! { #[cfg(any(unix, target_os = "redox"))] => { extern crate libc; mod nix; use ::nix as sys; } #[cfg(target_os = "windows")] => { extern crate winapi; mod windows; use ::windows as sys; } _ => { compile_error!("Unsupported target OS! Create an issue: https://github.com/svartalf/hostname/issues/new"); } } /// Return the system hostname. /// /// ## Example /// /// ```rust /// # use std::io; /// # fn try_main() -> io::Result<()> { /// let name = hostname::get()?; /// # Ok(()) /// # } /// # fn main() { /// # try_main().unwrap(); /// # } /// ``` /// /// ## Errors /// /// If this function encounters any form of error, an error /// variant will be returned; in practice it is rare to be happen. pub fn get() -> io::Result { sys::get() } /// Set the system hostname. /// /// This function is available only with `set` feature enabled (**disabled** by /// default). #[cfg_attr( feature = "set", doc = r#" ## Example ```rust,no_run # use std::io; # fn try_main() -> io::Result<()> { hostname::set("potato")?; # Ok(()) # } # fn main() { # try_main().unwrap(); # } ``` "# )] /// ## Errors /// /// In order to set new hostname, caller might need /// to have the corresponding privilege /// (`CAP_SYS_ADMIN` capability for Linux, administrator privileges for Windows, /// and so on).\ /// An error variant will be returned if this function /// will encounter a permission error or any other form of error. /// /// ## Compatibility /// /// * Will fail with a linkage error for Android API < 23 (see [#9](https://github.com/svartalf/hostname/issues/9#issuecomment-563991112)) #[cfg(feature = "set")] #[cfg_attr(docsrs, doc(cfg(feature = "set")))] pub fn set(hostname: T) -> io::Result<()> where T: AsRef, { sys::set(hostname.as_ref()) } hostname-0.3.1/src/nix.rs010064400017500001750000000061241357663234500135260ustar0000000000000000use std::io; #[cfg(feature = "set")] use std::ffi::OsStr; use std::ffi::OsString; #[cfg(feature = "set")] use std::os::unix::ffi::OsStrExt; use std::os::unix::ffi::OsStringExt; use libc; pub fn get() -> io::Result { // According to the POSIX specification, // host names are limited to `HOST_NAME_MAX` bytes // // https://pubs.opengroup.org/onlinepubs/9699919799/functions/gethostname.html let size = unsafe { libc::sysconf(libc::_SC_HOST_NAME_MAX) as libc::size_t }; let mut buffer = vec![0u8; size]; let result = unsafe { libc::gethostname(buffer.as_mut_ptr() as *mut libc::c_char, size) }; if result != 0 { return Err(io::Error::last_os_error()); } Ok(wrap_buffer(buffer)) } fn wrap_buffer(mut bytes: Vec) -> OsString { // Returned name might be truncated if it does not fit // and `buffer` will not contain the trailing \0 in that case. // Manually capping the buffer length here. let end = bytes .iter() .position(|&byte| byte == 0x00) .unwrap_or_else(|| bytes.len()); bytes.resize(end, 0x00); OsString::from_vec(bytes) } #[cfg(feature = "set")] pub fn set(hostname: &OsStr) -> io::Result<()> { #[cfg(not(any(target_os = "dragonfly", target_os = "freebsd", target_os = "ios", target_os = "macos")))] #[allow(non_camel_case_types)] type hostname_len_t = libc::size_t; #[cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "ios", target_os = "macos"))] #[allow(non_camel_case_types)] type hostname_len_t = libc::c_int; let size = hostname.len() as hostname_len_t; let result = unsafe { libc::sethostname( hostname.as_bytes().as_ptr() as *const libc::c_char, size, ) }; if result != 0 { Err(io::Error::last_os_error()) } else { Ok(()) } } #[cfg(test)] mod tests { use std::ffi::OsStr; use super::wrap_buffer; // Happy path case: there is a correct null terminated C string in a buffer // and a bunch of NULL characters from the pre-allocated buffer #[test] fn test_non_overflowed_buffer() { let buf = b"potato\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0".to_vec(); assert_eq!(wrap_buffer(buf), OsStr::new("potato")); } #[test] fn test_empty_buffer() { let buf = b"".to_vec(); assert_eq!(wrap_buffer(buf), OsStr::new("")); } #[test] fn test_filled_with_null_buffer() { let buf = b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0".to_vec(); assert_eq!(wrap_buffer(buf), OsStr::new("")); } // Hostname value had overflowed the buffer, so it was truncated // and according to the POSIX documentation of the `gethostname`: // // > it is unspecified whether the returned name is null-terminated. #[test] fn test_overflowed_buffer() { let buf = b"potat".to_vec(); assert_eq!(wrap_buffer(buf), OsStr::new("potat")); } } hostname-0.3.1/src/windows.rs010064400017500001750000000027621357663234500144260ustar0000000000000000use std::io; use std::ptr; #[cfg(feature = "set")] use std::ffi::OsStr; use std::ffi::OsString; #[cfg(feature = "set")] use std::os::windows::ffi::OsStrExt; use std::os::windows::ffi::OsStringExt; use winapi::um::sysinfoapi; pub fn get() -> io::Result { let mut size = 0; unsafe { // Don't care much about the result here, // it is guaranteed to return an error, // since we passed the NULL pointer as a buffer let result = sysinfoapi::GetComputerNameExW( sysinfoapi::ComputerNamePhysicalDnsHostname, ptr::null_mut(), &mut size, ); debug_assert_eq!(result, 0); }; let mut buffer = Vec::with_capacity(size as usize); let result = unsafe { sysinfoapi::GetComputerNameExW( sysinfoapi::ComputerNamePhysicalDnsHostname, buffer.as_mut_ptr(), &mut size, ) }; if result == 0 { Err(io::Error::last_os_error()) } else { unsafe { buffer.set_len(size as usize); } Ok(OsString::from_wide(&buffer)) } } #[cfg(feature = "set")] pub fn set(hostname: &OsStr) -> io::Result<()> { let buffer = hostname.encode_wide().collect::>(); let result = unsafe { sysinfoapi::SetComputerNameExW( sysinfoapi::ComputerNamePhysicalDnsHostname, buffer.as_ptr(), ) }; if result == 0 { Err(io::Error::last_os_error()) } else { Ok(()) } } hostname-0.3.1/tests/version.rs010064400017500001750000000003041356135145600147550ustar0000000000000000#[test] fn test_readme_deps() { version_sync::assert_markdown_deps_updated!("README.md"); } #[test] fn test_html_root_url() { version_sync::assert_html_root_url_updated!("src/lib.rs"); } hostname-0.3.1/.cargo_vcs_info.json0000644000000001121362624323100127450ustar00{ "git": { "sha1": "8b2b83de2fa29ab361d1902fa0504c6626824361" } } hostname-0.3.1/Cargo.lock0000644000000275201362624323100107340ustar00# This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] name = "aho-corasick" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "either" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hostname" version = "0.3.1" dependencies = [ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "match_cfg 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "version-sync 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "idna" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "itertools" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" version = "0.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "match_cfg" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro2" version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pulldown-cmark" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "quote" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "semver-parser" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "smallvec" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "syn" version = "0.15.44" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "thread_local" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "toml" version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicase" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicode-bidi" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicode-normalization" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "smallvec 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "url" version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "version-sync" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "pulldown-cmark 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "semver-parser 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "version_check" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] "checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" "checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" "checksum match_cfg 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum pulldown-cmark 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d1b74cc784b038a9921fd1a48310cc2e238101aa8ae0b94201e2d85121dd68b5" "checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" "checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" "checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" "checksum semver-parser 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b46e1121e8180c12ff69a742aabc4f310542b6ccb69f1691689ac17fdf8618aa" "checksum serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)" = "1217f97ab8e8904b57dd22eb61cde455fa7446a9c1cf43966066da047c1f3702" "checksum smallvec 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecf3b85f68e8abaa7555aa5abdb1153079387e60b718283d732f03897fcfc86" "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" "checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum version-sync 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "844f3d3a2467f15cb999f5af7775f6e108ac546d4f42365832ed4c755404f806" "checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"