SYMBOL INDEX (88 symbols across 7 files) FILE: skill-tree-testlib/src/github.rs type MockGitHub (line 23) | pub struct MockGitHub { method start (line 28) | pub async fn start() -> Self { method client (line 37) | pub fn client(&self, timeout: Duration) -> GitHubClient { method matcher (line 48) | pub fn matcher(&self) -> MockBuilder { method ok_data (line 53) | pub fn ok_data(&self, body: Value) -> MockHandle { method ok_data_with_headers (line 62) | pub fn ok_data_with_headers(&self, body: Value, headers: &[(&str, &str... method graphql_error (line 73) | pub fn graphql_error(&self, message: &str) -> MockHandle { method empty_envelope (line 83) | pub fn empty_envelope(&self) -> MockHandle { method status (line 89) | pub fn status(&self, status: u16) -> MockHandle { method status_with_body (line 94) | pub fn status_with_body(&self, status: u16, body: &str) -> MockHandle { method rate_limited (line 101) | pub fn rate_limited(&self, secs_until_reset: u64) -> MockHandle { FILE: src/config.rs type Fallible (line 24) | type Fallible = Result; type Config (line 27) | pub struct Config { method validate (line 149) | fn validate(&self) -> Fallible<()> { type GithubConfig (line 36) | pub struct GithubConfig { type FieldConfig (line 51) | pub struct FieldConfig { type ColorsConfig (line 64) | pub struct ColorsConfig { type SkillTree (line 78) | pub struct SkillTree { constant CONFIG_FILENAME (line 88) | pub const CONFIG_FILENAME: &'static str = ".skill-tree.toml"; method from_dir (line 93) | pub fn from_dir(dir: impl AsRef) -> Fallible { method from_path (line 99) | pub fn from_path(path: impl AsRef) -> Fallible { method config_dir (line 120) | pub fn config_dir(&self) -> &Path { method color_for_value (line 128) | pub fn color_for_value(&self, value: &str) -> Option<&str> { method color_field_github_name (line 133) | pub fn color_field_github_name(&self) -> &str { method field_by_display_name (line 140) | pub fn field_by_display_name(&self, display_name: &str) -> Option<&Fie... function is_valid_hex_color (line 163) | fn is_valid_hex_color(color: &str) -> bool { function parse (line 181) | fn parse(toml: &str) -> Config { function valid_toml (line 185) | fn valid_toml() -> &'static str { function minimal_toml (line 209) | fn minimal_toml() -> &'static str { function parses_github_section (line 218) | fn parses_github_section() { function parses_multiple_fields (line 225) | fn parses_multiple_fields() { function parses_colors_section (line 235) | fn parses_colors_section() { function minimal_config_is_valid (line 245) | fn minimal_config_is_valid() { function config_without_fields_is_valid (line 255) | fn config_without_fields_is_valid() { function validation_passes_on_valid_config (line 269) | fn validation_passes_on_valid_config() { function validation_fails_on_invalid_hex_color (line 275) | fn validation_fails_on_invalid_hex_color() { function from_dir_loads_config_file (line 298) | fn from_dir_loads_config_file() { function from_dir_fails_when_file_missing (line 308) | fn from_dir_fails_when_file_missing() { function color_for_value_returns_hex (line 317) | fn color_for_value_returns_hex() { function color_for_value_returns_none_when_colors_not_configured (line 327) | fn color_for_value_returns_none_when_colors_not_configured() { function field_by_display_name_finds_declared_field (line 336) | fn field_by_display_name_finds_declared_field() { function deny_unknown_fields_on_field_config (line 347) | fn deny_unknown_fields_on_field_config() { function hex_color_validation (line 365) | fn hex_color_validation() { FILE: src/error/config.rs type ConfigError (line 7) | pub enum ConfigError { method exit_code (line 40) | pub fn exit_code(&self) -> u8 { FILE: src/error/github.rs type GitHubError (line 13) | pub enum GitHubError { method exit_code (line 88) | pub fn exit_code(&self) -> u8 { type NetworkErrorKind (line 63) | pub enum NetworkErrorKind { method fmt (line 73) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { function missing_token_exit_code (line 106) | fn missing_token_exit_code() { function client_init_exit_code (line 111) | fn client_init_exit_code() { function network_error_exit_code (line 116) | fn network_error_exit_code() { function http_error_exit_code (line 125) | fn http_error_exit_code() { function graphql_error_exit_code (line 134) | fn graphql_error_exit_code() { function rate_limited_exit_code (line 140) | fn rate_limited_exit_code() { function timeout_exit_code (line 146) | fn timeout_exit_code() { function invalid_response_exit_code (line 152) | fn invalid_response_exit_code() { function network_error_kind_display (line 158) | fn network_error_kind_display() { FILE: src/github/mod.rs type GraphQLRequest (line 20) | pub(crate) struct GraphQLRequest<'a, V: Serialize> { type GraphQLResponse (line 26) | pub(crate) struct GraphQLResponse { type GraphQLErrorResponse (line 32) | pub(crate) struct GraphQLErrorResponse { type PageInfo (line 47) | pub struct PageInfo { type Connection (line 55) | pub struct Connection { type GitHubClient (line 69) | pub struct GitHubClient { constant DEFAULT_ENDPOINT (line 77) | const DEFAULT_ENDPOINT: &'static str = "https://api.github.com/graphql"; constant API_VERSION (line 78) | const API_VERSION: &'static str = "2022-11-28"; constant MAX_ATTEMPTS (line 82) | const MAX_ATTEMPTS: u32 = 3; constant RATE_LIMIT_FALLBACK_SECS (line 87) | const RATE_LIMIT_FALLBACK_SECS: u64 = 60; method new (line 94) | pub fn new(token: Option, timeout: Duration) -> Result(&self, query: &str, variables: V) -> Result( method classify_reqwest_error (line 276) | fn classify_reqwest_error(err: reqwest::Error) -> GitHubError { method is_transient (line 296) | fn is_transient(err: &GitHubError) -> bool { method backoff_duration (line 307) | fn backoff_duration(attempt: u32) -> Duration { type Issue (line 324) | struct Issue { function connection_deserializes_from_github_shape (line 329) | fn connection_deserializes_from_github_shape() { function page_info_handles_null_end_cursor_on_last_page (line 346) | fn page_info_handles_null_end_cursor_on_last_page() { FILE: src/main.rs function main (line 6) | fn main() { FILE: tests/github_client.rs type EmptyVars (line 15) | struct EmptyVars {} type Hello (line 18) | struct Hello { function retries_5xx_then_succeeds_and_returns_data (line 23) | async fn retries_5xx_then_succeeds_and_returns_data() { function gives_up_after_max_retries_returning_last_real_error (line 44) | async fn gives_up_after_max_retries_returning_last_real_error() { function rate_limit_within_budget_waits_and_retries (line 67) | async fn rate_limit_within_budget_waits_and_retries() { function rate_limit_outside_budget_surfaces_to_caller (line 88) | async fn rate_limit_outside_budget_surfaces_to_caller() { function graphql_errors_are_returned_without_retry (line 108) | async fn graphql_errors_are_returned_without_retry() { function invalid_response_when_envelope_has_neither_data_nor_errors (line 128) | async fn invalid_response_when_envelope_has_neither_data_nor_errors() { function sends_api_version_and_authorization_headers (line 148) | async fn sends_api_version_and_authorization_headers() {