From 52a4e0294e322a8ee4e869c9e4c651d5748b0bc2 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Mon, 9 May 2022 06:14:31 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20914fc?= =?UTF-8?q?216ef0b81b96e519f295c9aa7574fadf49b=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ICENSE.txt => NanumBarunGothic-LICENSE.txt | 12 +- NanumBarunGothic.ttf.woff | Bin 0 -> 677868 bytes NanumBarunGothic.ttf.woff2 | Bin 0 -> 399468 bytes ayu.css | 2 +- dark.css | 2 +- favicon-16x16.png | Bin 2214 -> 715 bytes favicon-32x32.png | Bin 2919 -> 1125 bytes .../trait.GetLoginRoute.js | 3 + implementors/actix_service/trait.Service.js | 3 - .../transform/trait.Transform.js | 3 - implementors/core/clone/trait.Clone.js | 4 +- implementors/core/cmp/trait.PartialEq.js | 2 +- implementors/core/convert/trait.From.js | 2 +- implementors/core/default/trait.Default.js | 2 +- implementors/core/fmt/trait.Debug.js | 4 +- implementors/core/fmt/trait.Display.js | 2 +- implementors/core/marker/trait.Freeze.js | 4 +- implementors/core/marker/trait.Send.js | 4 +- .../core/marker/trait.StructuralPartialEq.js | 2 +- implementors/core/marker/trait.Sync.js | 4 +- implementors/core/marker/trait.Unpin.js | 4 +- implementors/core/ops/deref/trait.Deref.js | 4 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 4 +- .../panic/unwind_safe/trait.UnwindSafe.js | 4 +- implementors/sailfish/private/trait.Sealed.js | 2 +- implementors/sailfish/trait.TemplateOnce.js | 2 +- implementors/serde/de/trait.Deserialize.js | 4 +- implementors/serde/ser/trait.Serialize.js | 2 +- implementors/std/error/trait.Error.js | 2 +- light.css | 2 +- main.js | 4 +- mcaptcha/all.html | 10 +- mcaptcha/api/index.html | 11 +- .../api/v1/account/delete/fn.services.html | 9 +- mcaptcha/api/v1/account/delete/index.html | 15 +- .../delete/runners/fn.delete_user.html | 9 +- .../api/v1/account/delete/runners/index.html | 11 +- .../account/delete/struct.delete_account.html | 47 +- .../api/v1/account/email/fn.services.html | 9 +- mcaptcha/api/v1/account/email/index.html | 13 +- .../api/v1/account/email/struct.Email.html | 68 +- .../v1/account/email/struct.email_exists.html | 47 +- .../v1/account/email/struct.set_email.html | 49 +- mcaptcha/api/v1/account/fn.services.html | 9 +- mcaptcha/api/v1/account/index.html | 17 +- .../api/v1/account/password/fn.services.html | 9 +- .../password/fn.update_password_runner.html | 9 +- mcaptcha/api/v1/account/password/index.html | 13 +- .../password/struct.ChangePasswordReqest.html | 74 +- .../password/struct.UpdatePassword.html | 55 +- .../password/struct.update_user_password.html | 47 +- mcaptcha/api/v1/account/routes/index.html | 11 +- .../api/v1/account/routes/struct.Account.html | 65 +- .../api/v1/account/secret/fn.services.html | 9 +- mcaptcha/api/v1/account/secret/index.html | 13 +- .../api/v1/account/secret/struct.Secret.html | 68 +- .../v1/account/secret/struct.get_secret.html | 47 +- .../secret/struct.update_user_secret.html | 47 +- .../account/struct.AccountCheckPayload.html | 68 +- .../v1/account/struct.AccountCheckResp.html | 68 +- .../api/v1/account/username/fn.services.html | 9 +- mcaptcha/api/v1/account/username/index.html | 15 +- .../username/runners/fn.username_exists.html | 9 +- .../v1/account/username/runners/index.html | 11 +- .../v1/account/username/struct.Username.html | 68 +- .../account/username/struct.set_username.html | 49 +- .../username/struct.username_exists.html | 47 +- mcaptcha/api/v1/auth/fn.services.html | 9 +- mcaptcha/api/v1/auth/index.html | 15 +- mcaptcha/api/v1/auth/routes/index.html | 11 +- mcaptcha/api/v1/auth/routes/struct.Auth.html | 55 +- .../api/v1/auth/runners/fn.login_runner.html | 11 +- .../v1/auth/runners/fn.register_runner.html | 9 +- mcaptcha/api/v1/auth/runners/index.html | 13 +- .../api/v1/auth/runners/struct.Login.html | 70 +- .../api/v1/auth/runners/struct.Password.html | 68 +- .../api/v1/auth/runners/struct.Register.html | 74 +- mcaptcha/api/v1/auth/struct.login.html | 47 +- mcaptcha/api/v1/auth/struct.register.html | 47 +- mcaptcha/api/v1/auth/struct.signout.html | 47 +- mcaptcha/api/v1/fn.get_middleware.html | 8 + mcaptcha/api/v1/fn.services.html | 9 +- mcaptcha/api/v1/index.html | 16 +- mcaptcha/api/v1/mcaptcha/create/index.html | 13 +- .../v1/mcaptcha/create/runner/fn.create.html | 9 +- .../api/v1/mcaptcha/create/runner/index.html | 11 +- .../mcaptcha/create/struct.CreateCaptcha.html | 59 +- .../create/struct.MCaptchaDetails.html | 70 +- .../api/v1/mcaptcha/create/struct.create.html | 47 +- mcaptcha/api/v1/mcaptcha/delete/index.html | 11 +- .../mcaptcha/delete/struct.DeleteCaptcha.html | 70 +- .../api/v1/mcaptcha/delete/struct.delete.html | 47 +- .../api/v1/mcaptcha/easy/fn.services.html | 9 +- mcaptcha/api/v1/mcaptcha/easy/index.html | 15 +- .../api/v1/mcaptcha/easy/routes/index.html | 11 +- .../v1/mcaptcha/easy/routes/struct.Easy.html | 55 +- .../mcaptcha/easy/struct.TrafficPattern.html | 74 +- .../easy/struct.UpdateTrafficPattern.html | 68 +- .../api/v1/mcaptcha/easy/struct.create.html | 47 +- .../api/v1/mcaptcha/easy/struct.update.html | 47 +- mcaptcha/api/v1/mcaptcha/fn.get_random.html | 9 +- mcaptcha/api/v1/mcaptcha/fn.services.html | 9 +- mcaptcha/api/v1/mcaptcha/get/index.html | 13 +- .../mcaptcha/get/runner/fn.get_captcha.html | 9 +- .../api/v1/mcaptcha/get/runner/index.html | 11 +- .../api/v1/mcaptcha/get/struct.I32Levels.html | 70 +- .../api/v1/mcaptcha/get/struct.Levels.html | 66 +- .../v1/mcaptcha/get/struct.get_captcha.html | 47 +- mcaptcha/api/v1/mcaptcha/index.html | 13 +- mcaptcha/api/v1/mcaptcha/routes/index.html | 11 +- .../v1/mcaptcha/routes/struct.Captcha.html | 59 +- mcaptcha/api/v1/mcaptcha/stats/index.html | 13 +- .../api/v1/mcaptcha/stats/routes/index.html | 11 +- .../mcaptcha/stats/routes/struct.Stats.html | 51 +- .../mcaptcha/stats/struct.StatsPayload.html | 68 +- .../api/v1/mcaptcha/stats/struct.get.html | 47 +- mcaptcha/api/v1/mcaptcha/update/index.html | 13 +- .../update/runner/fn.update_captcha.html | 9 +- .../mcaptcha/update/runner/fn.update_key.html | 9 +- .../api/v1/mcaptcha/update/runner/index.html | 11 +- .../mcaptcha/update/struct.UpdateCaptcha.html | 61 +- .../update/struct.update_captcha.html | 47 +- .../v1/mcaptcha/update/struct.update_key.html | 47 +- .../meta/enum.BuildDetailsBuilderError.html | 75 +- .../api/v1/meta/enum.HealthBuilderError.html | 75 +- mcaptcha/api/v1/meta/fn.services.html | 9 +- mcaptcha/api/v1/meta/index.html | 17 +- mcaptcha/api/v1/meta/routes/index.html | 11 +- mcaptcha/api/v1/meta/routes/struct.Meta.html | 53 +- mcaptcha/api/v1/meta/struct.BuildDetails.html | 70 +- .../v1/meta/struct.BuildDetailsBuilder.html | 71 +- mcaptcha/api/v1/meta/struct.Health.html | 70 +- .../api/v1/meta/struct.HealthBuilder.html | 71 +- .../api/v1/meta/struct.build_details.html | 49 +- mcaptcha/api/v1/meta/struct.health.html | 49 +- mcaptcha/api/v1/notifications/add/index.html | 11 +- .../add/struct.AddNotification.html | 59 +- .../add/struct.add_notification.html | 49 +- .../api/v1/notifications/fn.services.html | 9 +- mcaptcha/api/v1/notifications/get/index.html | 13 +- .../get/runner/fn.get_notification.html | 9 +- .../v1/notifications/get/runner/index.html | 11 +- .../get/struct.Notification.html | 63 +- .../get/struct.NotificationResp.html | 65 +- .../get/struct.get_notification.html | 49 +- mcaptcha/api/v1/notifications/index.html | 13 +- .../api/v1/notifications/mark_read/index.html | 11 +- .../mark_read/struct.MarkReadReq.html | 55 +- .../mark_read/struct.NotificationResp.html | 63 +- .../mark_read/struct.mark_read.html | 49 +- .../api/v1/notifications/routes/index.html | 11 +- .../routes/struct.Notifications.html | 55 +- mcaptcha/api/v1/pow/fn.services.html | 9 +- .../v1/pow/get_config/fn.init_mcaptcha.html | 11 +- mcaptcha/api/v1/pow/get_config/index.html | 13 +- .../get_config/struct.GetConfigPayload.html | 68 +- .../v1/pow/get_config/struct.get_config.html | 49 +- mcaptcha/api/v1/pow/index.html | 15 +- mcaptcha/api/v1/pow/routes/index.html | 13 +- .../api/v1/pow/routes/macro.rm_scope.html | 13 +- mcaptcha/api/v1/pow/routes/struct.PoW.html | 63 +- mcaptcha/api/v1/pow/verify_pow/index.html | 13 +- .../verify_pow/struct.ValidationToken.html | 68 +- .../v1/pow/verify_pow/struct.verify_pow.html | 49 +- mcaptcha/api/v1/pow/verify_token/index.html | 13 +- .../struct.CaptchaValidateResp.html | 68 +- .../struct.validate_captcha_token.html | 49 +- mcaptcha/api/v1/routes/constant.ROUTES.html | 9 +- mcaptcha/api/v1/routes/index.html | 13 +- mcaptcha/api/v1/routes/struct.Routes.html | 49 +- mcaptcha/api/v1/sidebar-items.js | 2 +- mcaptcha/api/v1/struct.RedirectQuery.html | 31 + mcaptcha/constant.CACHE_AGE.html | 9 +- mcaptcha/constant.COMPILED_DATE.html | 9 +- mcaptcha/constant.DOCS.html | 9 +- mcaptcha/constant.GIT_COMMIT_HASH.html | 9 +- mcaptcha/constant.PAGES.html | 9 +- mcaptcha/constant.PKG_DESCRIPTION.html | 9 +- mcaptcha/constant.PKG_HOMEPAGE.html | 9 +- mcaptcha/constant.PKG_NAME.html | 9 +- mcaptcha/constant.V1_API_ROUTES.html | 9 +- mcaptcha/constant.VERSION.html | 9 +- mcaptcha/constant.WIDGET_ROUTES.html | 9 +- mcaptcha/data/enum.SystemGroup.html | 49 +- mcaptcha/data/index.html | 19 +- mcaptcha/data/macro.enum_system_actor.html | 13 +- mcaptcha/data/macro.enum_system_wrapper.html | 13 +- mcaptcha/data/struct.Data.html | 55 +- mcaptcha/data/type.Mailer.html | 11 +- mcaptcha/date/constant.DAY.html | 9 +- mcaptcha/date/constant.HOUR.html | 9 +- mcaptcha/date/constant.MINUTE.html | 9 +- mcaptcha/date/constant.WEEK.html | 9 +- mcaptcha/date/index.html | 13 +- mcaptcha/date/struct.Date.html | 66 +- mcaptcha/demo/constant.DEMO_PASSWORD.html | 11 +- mcaptcha/demo/constant.DEMO_USER.html | 11 +- mcaptcha/demo/index.html | 13 +- mcaptcha/demo/struct.DemoUser.html | 53 +- mcaptcha/docs/constant.DOCS.html | 9 +- mcaptcha/docs/constant.OPEN_API_SPEC.html | 9 +- mcaptcha/docs/fn.handle_embedded_file.html | 9 +- mcaptcha/docs/fn.services.html | 9 +- mcaptcha/docs/index.html | 17 +- mcaptcha/docs/routes/index.html | 11 +- mcaptcha/docs/routes/struct.Docs.html | 55 +- mcaptcha/docs/struct.Asset.html | 55 +- mcaptcha/docs/struct.dist.html | 47 +- mcaptcha/docs/struct.index.html | 47 +- mcaptcha/docs/struct.spec.html | 47 +- mcaptcha/email/index.html | 11 +- .../email/verification/constant.PAGE.html | 9 +- .../email/verification/fn.verification.html | 9 +- mcaptcha/email/verification/index.html | 17 +- .../email/verification/struct.IndexPage.html | 66 +- mcaptcha/errors/enum.PageError.html | 77 +- mcaptcha/errors/enum.ServiceError.html | 105 +- mcaptcha/errors/index.html | 15 +- mcaptcha/errors/struct.ErrorToResponse.html | 55 +- mcaptcha/errors/struct.SmtpErrorWrapper.html | 67 +- mcaptcha/errors/type.PageResult.html | 9 +- mcaptcha/errors/type.ServiceResult.html | 9 +- mcaptcha/fn.get_identity_service.html | 9 +- mcaptcha/fn.get_json_err.html | 9 +- mcaptcha/fn.main.html | 9 +- mcaptcha/index.html | 23 +- mcaptcha/middleware/auth/index.html | 4 - mcaptcha/middleware/auth/sidebar-items.js | 1 - .../middleware/auth/struct.CheckLogin.html | 27 - .../auth/struct.CheckLoginMiddleware.html | 33 - mcaptcha/middleware/index.html | 4 - mcaptcha/middleware/sidebar-items.js | 1 - mcaptcha/pages/auth/fn.services.html | 9 +- mcaptcha/pages/auth/index.html | 13 +- mcaptcha/pages/auth/login/constant.PAGE.html | 9 +- mcaptcha/pages/auth/login/index.html | 13 +- mcaptcha/pages/auth/login/struct.INDEX.html | 1233 ++++++++++++++++- .../pages/auth/login/struct.IndexPage.html | 64 +- mcaptcha/pages/auth/login/struct.login.html | 47 +- .../pages/auth/register/constant.PAGE.html | 9 +- mcaptcha/pages/auth/register/index.html | 13 +- .../pages/auth/register/struct.INDEX.html | 1233 ++++++++++++++++- .../pages/auth/register/struct.IndexPage.html | 64 +- mcaptcha/pages/auth/register/struct.join.html | 47 +- mcaptcha/pages/auth/routes/index.html | 11 +- mcaptcha/pages/auth/routes/struct.Auth.html | 53 +- mcaptcha/pages/auth/sudo/constant.PAGE.html | 9 +- mcaptcha/pages/auth/sudo/index.html | 13 +- mcaptcha/pages/auth/sudo/struct.SudoPage.html | 68 +- mcaptcha/pages/constant.NAME.html | 9 +- .../pages/errors/constant.ERROR_ROUTE.html | 9 +- mcaptcha/pages/errors/constant.PAGE.html | 9 +- mcaptcha/pages/errors/fn.services.html | 9 +- mcaptcha/pages/errors/index.html | 17 +- mcaptcha/pages/errors/routes/index.html | 11 +- .../pages/errors/routes/struct.Errors.html | 53 +- mcaptcha/pages/errors/struct.ErrorPage.html | 68 +- .../struct.INTERNAL_SERVER_ERROR_BODY.html | 1233 ++++++++++++++++- .../errors/struct.UNKNOWN_ERROR_BODY.html | 1233 ++++++++++++++++- mcaptcha/pages/errors/struct.error.html | 47 +- mcaptcha/pages/fn.get_middleware.html | 8 + mcaptcha/pages/fn.services.html | 9 +- mcaptcha/pages/index.html | 15 +- mcaptcha/pages/panel/constant.PAGE.html | 9 +- mcaptcha/pages/panel/fn.services.html | 9 +- mcaptcha/pages/panel/index.html | 17 +- .../panel/notifications/constant.PAGE.html | 9 +- mcaptcha/pages/panel/notifications/index.html | 13 +- .../panel/notifications/struct.IndexPage.html | 57 +- .../notifications/struct.Notification.html | 59 +- .../notifications/struct.notifications.html | 47 +- mcaptcha/pages/panel/routes/index.html | 11 +- mcaptcha/pages/panel/routes/struct.Panel.html | 53 +- .../pages/panel/settings/constant.PAGE.html | 9 +- .../pages/panel/settings/fn.services.html | 9 +- mcaptcha/pages/panel/settings/index.html | 17 +- .../pages/panel/settings/routes/index.html | 11 +- .../settings/routes/struct.Settings.html | 55 +- .../panel/settings/struct.IndexPage.html | 70 +- .../panel/settings/struct.delete_account.html | 47 +- .../pages/panel/settings/struct.settings.html | 47 +- .../panel/settings/struct.update_secret.html | 47 +- .../panel/sitekey/add/constant.PAGE.html | 9 +- mcaptcha/pages/panel/sitekey/add/index.html | 13 +- .../sitekey/add/struct.ADVANCE_INDEX.html | 1233 ++++++++++++++++- .../sitekey/add/struct.AdvanceIndexPage.html | 74 +- .../panel/sitekey/add/struct.EASY_INDEX.html | 1233 ++++++++++++++++- .../sitekey/add/struct.EasyIndexPage.html | 76 +- .../panel/sitekey/add/struct.advance.html | 47 +- .../pages/panel/sitekey/add/struct.easy.html | 47 +- .../pages/panel/sitekey/delete/index.html | 11 +- .../sitekey/delete/struct.delete_sitekey.html | 47 +- .../panel/sitekey/edit/constant.PAGE.html | 9 +- mcaptcha/pages/panel/sitekey/edit/index.html | 13 +- .../sitekey/edit/struct.AdvanceEditPage.html | 72 +- .../sitekey/edit/struct.EasyEditPage.html | 68 +- .../panel/sitekey/edit/struct.Level.html | 64 +- .../sitekey/edit/struct.McaptchaConfig.html | 66 +- .../panel/sitekey/edit/struct.advance.html | 49 +- .../pages/panel/sitekey/edit/struct.easy.html | 49 +- mcaptcha/pages/panel/sitekey/fn.services.html | 9 +- mcaptcha/pages/panel/sitekey/index.html | 13 +- .../panel/sitekey/list/constant.PAGE.html | 9 +- .../sitekey/list/fn.get_list_sitekeys.html | 11 +- mcaptcha/pages/panel/sitekey/list/index.html | 17 +- .../panel/sitekey/list/struct.IndexPage.html | 66 +- .../sitekey/list/struct.list_sitekeys.html | 49 +- .../panel/sitekey/list/type.SiteKeys.html | 9 +- .../pages/panel/sitekey/routes/index.html | 11 +- .../panel/sitekey/routes/struct.Sitekey.html | 63 +- .../panel/sitekey/view/constant.PAGE.html | 9 +- mcaptcha/pages/panel/sitekey/view/index.html | 13 +- .../panel/sitekey/view/struct.IndexPage.html | 72 +- .../panel/sitekey/view/struct.Level.html | 64 +- .../sitekey/view/struct.McaptchaConfig.html | 66 +- .../sitekey/view/struct.view_sitekey.html | 49 +- mcaptcha/pages/panel/struct.IndexPage.html | 66 +- mcaptcha/pages/panel/struct.panel.html | 47 +- mcaptcha/pages/routes/constant.ROUTES.html | 9 +- mcaptcha/pages/routes/index.html | 13 +- mcaptcha/pages/routes/struct.Routes.html | 63 +- mcaptcha/pages/sidebar-items.js | 2 +- mcaptcha/pages/sitemap/index.html | 11 +- mcaptcha/pages/sitemap/struct.INDEX.html | 1233 ++++++++++++++++- mcaptcha/pages/sitemap/struct.IndexPage.html | 70 +- mcaptcha/pages/sitemap/struct.sitemap.html | 47 +- mcaptcha/routes/fn.services.html | 9 +- mcaptcha/routes/index.html | 11 +- mcaptcha/settings/fn.check_url.html | 9 +- mcaptcha/settings/fn.set_database_url.html | 9 +- .../settings/fn.set_from_database_url.html | 9 +- mcaptcha/settings/index.html | 13 +- mcaptcha/settings/struct.Captcha.html | 68 +- mcaptcha/settings/struct.Database.html | 68 +- mcaptcha/settings/struct.DatabaseBuilder.html | 74 +- .../struct.DefaultDifficultyStrategy.html | 72 +- mcaptcha/settings/struct.Redis.html | 68 +- mcaptcha/settings/struct.Server.html | 76 +- mcaptcha/settings/struct.Settings.html | 78 +- mcaptcha/settings/struct.Smtp.html | 76 +- mcaptcha/sidebar-items.js | 2 +- mcaptcha/static_assets/filemap/index.html | 11 +- .../static_assets/filemap/struct.FileMap.html | 49 +- mcaptcha/static_assets/fn.services.html | 9 +- mcaptcha/static_assets/index.html | 15 +- .../static_files/assets/index.html | 13 +- .../static_files/assets/struct.BAR_CHART.html | 55 +- .../assets/struct.CREDIT_CARD.html | 55 +- .../static_files/assets/struct.DOCS_ICON.html | 55 +- .../static_files/assets/struct.GITHUB.html | 55 +- .../assets/struct.HELP_CIRCLE.html | 55 +- .../static_files/assets/struct.HOME.html | 55 +- .../static_files/assets/struct.KEY.html | 55 +- .../assets/struct.MCAPTCHA_TRANS_ICON.html | 55 +- .../static_files/assets/struct.MESSAGE.html | 55 +- .../assets/struct.SETTINGS_ICON.html | 55 +- .../static_files/assets/type.Img.html | 9 +- .../static_files/fn.handle_assets.html | 9 +- .../static_files/fn.handle_favicons.html | 9 +- .../static_assets/static_files/index.html | 15 +- .../static_files/struct.Asset.html | 55 +- .../static_files/struct.Favicons.html | 55 +- .../static_files/struct.favicons.html | 47 +- .../static_files/struct.static_files.html | 47 +- mcaptcha/stats/fetch/index.html | 13 +- .../runners/fn.fetch_config_fetched.html | 11 +- .../stats/fetch/runners/fn.fetch_confirm.html | 11 +- .../stats/fetch/runners/fn.fetch_solve.html | 11 +- mcaptcha/stats/fetch/runners/index.html | 11 +- mcaptcha/stats/fetch/struct.Stats.html | 68 +- mcaptcha/stats/fetch/struct.StatsPayload.html | 68 +- .../fetch/struct.StatsUnixTimestamp.html | 74 +- mcaptcha/stats/index.html | 11 +- mcaptcha/stats/record/fn.record_confirm.html | 11 +- mcaptcha/stats/record/fn.record_fetch.html | 11 +- mcaptcha/stats/record/fn.record_solve.html | 11 +- mcaptcha/stats/record/index.html | 11 +- mcaptcha/struct.BAR_CHART.html | 55 +- mcaptcha/struct.CREDIT_CARD.html | 55 +- mcaptcha/struct.CSS.html | 1211 +++++++++++++++- mcaptcha/struct.CheckLogin.html | 27 - mcaptcha/struct.DOCS_ICON.html | 55 +- mcaptcha/struct.Data.html | 55 +- mcaptcha/struct.FILES.html | 55 +- mcaptcha/struct.GITHUB.html | 55 +- mcaptcha/struct.HELP_CIRCLE.html | 55 +- mcaptcha/struct.HOME.html | 55 +- mcaptcha/struct.JS.html | 1211 +++++++++++++++- mcaptcha/struct.KEY.html | 55 +- mcaptcha/struct.MCAPTCHA_TRANS_ICON.html | 55 +- mcaptcha/struct.MESSAGE.html | 55 +- mcaptcha/struct.MOBILE_CSS.html | 1211 +++++++++++++++- mcaptcha/struct.SETTINGS.html | 55 +- mcaptcha/struct.SETTINGS_ICON.html | 55 +- mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html | 1233 ++++++++++++++++- mcaptcha/struct.Settings.html | 78 +- mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html | 1211 +++++++++++++++- mcaptcha/struct.VERIFICATIN_WIDGET_JS.html | 1211 +++++++++++++++- mcaptcha/type.AppData.html | 9 +- mcaptcha/widget/constant.PAGE.html | 9 +- mcaptcha/widget/constant.WIDGET_ROUTES.html | 9 +- mcaptcha/widget/fn.services.html | 11 +- mcaptcha/widget/index.html | 19 +- mcaptcha/widget/routes/index.html | 11 +- mcaptcha/widget/routes/struct.Widget.html | 51 +- mcaptcha/widget/struct.INDEX_PAGE.html | 1233 ++++++++++++++++- mcaptcha/widget/struct.IndexPage.html | 62 +- mcaptcha/widget/struct.show_widget.html | 49 +- noscript.css | 2 +- noto-sans-kr-regular.woff | Bin 279528 -> 0 bytes noto-sans-kr-regular.woff2 | Bin 245248 -> 0 bytes rust-logo.png | Bin 5758 -> 0 bytes rust-logo.svg | 61 + rustdoc.css | 2 +- search-index.js | 4 +- search.js | 3 +- settings.css | 2 +- settings.html | 19 +- settings.js | 2 +- source-files.js | 2 +- source-script.js | 2 +- src/mcaptcha/api/mod.rs.html | 10 +- src/mcaptcha/api/v1/account/delete.rs.html | 14 +- src/mcaptcha/api/v1/account/email.rs.html | 14 +- src/mcaptcha/api/v1/account/mod.rs.html | 12 +- src/mcaptcha/api/v1/account/password.rs.html | 14 +- src/mcaptcha/api/v1/account/secret.rs.html | 16 +- src/mcaptcha/api/v1/account/username.rs.html | 14 +- src/mcaptcha/api/v1/auth.rs.html | 74 +- src/mcaptcha/api/v1/mcaptcha/create.rs.html | 12 +- src/mcaptcha/api/v1/mcaptcha/delete.rs.html | 12 +- src/mcaptcha/api/v1/mcaptcha/easy.rs.html | 16 +- src/mcaptcha/api/v1/mcaptcha/get.rs.html | 12 +- src/mcaptcha/api/v1/mcaptcha/mod.rs.html | 12 +- src/mcaptcha/api/v1/mcaptcha/stats.rs.html | 12 +- src/mcaptcha/api/v1/mcaptcha/update.rs.html | 14 +- src/mcaptcha/api/v1/meta.rs.html | 12 +- src/mcaptcha/api/v1/mod.rs.html | 34 +- src/mcaptcha/api/v1/notifications/add.rs.html | 12 +- src/mcaptcha/api/v1/notifications/get.rs.html | 12 +- .../api/v1/notifications/mark_read.rs.html | 12 +- src/mcaptcha/api/v1/notifications/mod.rs.html | 12 +- src/mcaptcha/api/v1/pow/get_config.rs.html | 10 +- src/mcaptcha/api/v1/pow/mod.rs.html | 12 +- src/mcaptcha/api/v1/pow/verify_pow.rs.html | 10 +- src/mcaptcha/api/v1/pow/verify_token.rs.html | 10 +- src/mcaptcha/api/v1/routes.rs.html | 24 +- src/mcaptcha/data.rs.html | 10 +- src/mcaptcha/date.rs.html | 12 +- src/mcaptcha/demo.rs.html | 10 +- src/mcaptcha/docs.rs.html | 28 +- src/mcaptcha/email/mod.rs.html | 10 +- src/mcaptcha/email/verification.rs.html | 10 +- src/mcaptcha/errors.rs.html | 10 +- src/mcaptcha/main.rs.html | 14 +- src/mcaptcha/middleware/auth.rs.html | 166 --- src/mcaptcha/middleware/mod.rs.html | 40 - src/mcaptcha/pages/auth/login.rs.html | 14 +- src/mcaptcha/pages/auth/mod.rs.html | 44 +- src/mcaptcha/pages/auth/register.rs.html | 12 +- src/mcaptcha/pages/auth/sudo.rs.html | 10 +- src/mcaptcha/pages/errors.rs.html | 16 +- src/mcaptcha/pages/mod.rs.html | 22 +- src/mcaptcha/pages/panel/mod.rs.html | 20 +- .../pages/panel/notifications.rs.html | 18 +- src/mcaptcha/pages/panel/settings.rs.html | 28 +- src/mcaptcha/pages/panel/sitekey/add.rs.html | 18 +- .../pages/panel/sitekey/delete.rs.html | 20 +- src/mcaptcha/pages/panel/sitekey/edit.rs.html | 14 +- src/mcaptcha/pages/panel/sitekey/list.rs.html | 18 +- src/mcaptcha/pages/panel/sitekey/mod.rs.html | 12 +- src/mcaptcha/pages/panel/sitekey/view.rs.html | 18 +- src/mcaptcha/pages/routes.rs.html | 26 +- src/mcaptcha/pages/sitemap.rs.html | 12 +- src/mcaptcha/routes.rs.html | 12 +- src/mcaptcha/settings.rs.html | 32 +- src/mcaptcha/static_assets/filemap.rs.html | 10 +- src/mcaptcha/static_assets/mod.rs.html | 12 +- .../static_assets/static_files.rs.html | 28 +- src/mcaptcha/stats/fetch.rs.html | 10 +- src/mcaptcha/stats/mod.rs.html | 10 +- src/mcaptcha/stats/record.rs.html | 10 +- src/mcaptcha/widget/mod.rs.html | 14 +- src/tests_migrate/settings.rs.html | 32 +- src/tests_migrate/tests-migrate.rs.html | 12 +- storage.js | 2 +- tests_migrate/all.html | 10 +- tests_migrate/fn.build.html | 9 +- tests_migrate/fn.cache_bust.html | 9 +- tests_migrate/fn.main.html | 9 +- tests_migrate/index.html | 15 +- tests_migrate/settings/fn.check_url.html | 9 +- .../settings/fn.set_database_url.html | 9 +- .../settings/fn.set_from_database_url.html | 9 +- tests_migrate/settings/index.html | 13 +- tests_migrate/settings/struct.Captcha.html | 60 +- tests_migrate/settings/struct.Database.html | 60 +- .../settings/struct.DatabaseBuilder.html | 66 +- .../struct.DefaultDifficultyStrategy.html | 64 +- tests_migrate/settings/struct.Redis.html | 60 +- tests_migrate/settings/struct.Server.html | 68 +- tests_migrate/settings/struct.Settings.html | 70 +- tests_migrate/settings/struct.Smtp.html | 68 +- tests_migrate/struct.SETTINGS.html | 47 +- tests_migrate/struct.Settings.html | 70 +- 505 files changed, 24940 insertions(+), 6330 deletions(-) rename noto-sans-kr-LICENSE.txt => NanumBarunGothic-LICENSE.txt (90%) create mode 100644 NanumBarunGothic.ttf.woff create mode 100644 NanumBarunGothic.ttf.woff2 create mode 100644 implementors/actix_auth_middleware/trait.GetLoginRoute.js delete mode 100644 implementors/actix_service/trait.Service.js delete mode 100644 implementors/actix_service/transform/trait.Transform.js create mode 100644 mcaptcha/api/v1/fn.get_middleware.html create mode 100644 mcaptcha/api/v1/struct.RedirectQuery.html delete mode 100644 mcaptcha/middleware/auth/index.html delete mode 100644 mcaptcha/middleware/auth/sidebar-items.js delete mode 100644 mcaptcha/middleware/auth/struct.CheckLogin.html delete mode 100644 mcaptcha/middleware/auth/struct.CheckLoginMiddleware.html delete mode 100644 mcaptcha/middleware/index.html delete mode 100644 mcaptcha/middleware/sidebar-items.js create mode 100644 mcaptcha/pages/fn.get_middleware.html delete mode 100644 mcaptcha/struct.CheckLogin.html delete mode 100644 noto-sans-kr-regular.woff delete mode 100644 noto-sans-kr-regular.woff2 delete mode 100644 rust-logo.png create mode 100644 rust-logo.svg delete mode 100644 src/mcaptcha/middleware/auth.rs.html delete mode 100644 src/mcaptcha/middleware/mod.rs.html diff --git a/noto-sans-kr-LICENSE.txt b/NanumBarunGothic-LICENSE.txt similarity index 90% rename from noto-sans-kr-LICENSE.txt rename to NanumBarunGothic-LICENSE.txt index 922d5fdc..0bf46682 100644 --- a/noto-sans-kr-LICENSE.txt +++ b/NanumBarunGothic-LICENSE.txt @@ -1,8 +1,14 @@ -Copyright 2014, 2015 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. +Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/), + +with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, +NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen, +Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco, +NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic, +Naver NanumBarunGothic, NanumSquareRound, NanumBarunPen, MaruBuri This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL ----------------------------------------------------------- diff --git a/NanumBarunGothic.ttf.woff b/NanumBarunGothic.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..fb063e8fb7dc5435c591560e257903a35f76ee6a GIT binary patch literal 677868 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⋘6;xf~32d$0yk&7>f75=aNfY{aX;P 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ȫt(PxR${=poRw4*a?_M2*akmH!V-Xt0A{c`H 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�mPX# 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�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

xz5_8aF@(pQs@zgto+ItjS_s2^}<|M=lFQ2 z(q-ZShLtD|7Xn+iOvq$OBMbdg#~aF)Q;!vf8bMkNe|D&Drx))jd_321w59&m6JAb{ zLt@ATHgyI=>^cV7U6h~qLOU(^SPbQp;#8x$?q{7?x|qqE;YJ*aoEXXGO)ZHSRF<+< z^iwfU8qxRVuS8lK#rr($)+r8>FYv;Y3$@cSPnmJ@m8-)DVHylU2t|1SM?kp0@Wz5W ztUn0O3Jd$|1$Q8OozY^lus}3T|G3&I)+S_))IDOa%VBbF*uc|;tutcgzDATMuC(f}qzArQ%NO zd;V*>wPN(8LySz8F^i(9kdNg~jnF933W#J(vVX{#f6D505hJFb$?kdyCWPrmG6l!d z_DFmYFPl(RIfa}sDTArJkCoi3Y#ndzkTm}nXe-M1DRsw#{EmOscqRL zdrJqb$t7%GxTC7lGXaI06vd1B-&{R+gAXOM*D^4!xIsVWmQ;lW zf$?TO3r8df_-n@`!I(*z)xXM-z9VGw>DN4bEC?UJ$NTuf-MJ~33e?Q^l`eQ?=G5Mt z@GxaA=npIvS{6teEwfs_GN&b<3rYKjB1u!j%BSeYuSS6~$T#vXf?ssedTY^Ws9RCH zHv+xCgSC7;46~>gMxx^Am=Pi_=U1g<)3`AOiR)ia&N3?>a0C$w4#ZzaAvQp;GWDGQ z{FFwjgz|Y(>Py=_I=0fB+QD6n$C|WCEtV`R6|9=iI-g~(^y*y2{(M$h;xk%@;;}NV z=XO5`KRS8qgw|~jehiJZm^UW0AX7V}iEVR^0^GlD|`Epkse@I#k z;=S<=o)VvTf@FExDb06Zcl;qSDr*?=b)JRD|DdzdUj@9pntUEQN5E;uCf&4?CK)vE z2Q$fxeg>_dp8GOm-Fn%Xii^YgX`(Yz`D9(054n6eeLO<)C^LK`wjwlJ2>R-Rm-FY1E3rNpY2~gwf6J3^-pvl(5_M#Hy;P z%Cy8QbCprpWYa?{4G89vW{2~WR;)QMXonk0m^w#?ptEA#sXRxzcy)LZ9M zbfz}|kw;u8k%|V;(ij`j^~I17HN%2+RTg2tu8MVnbMYk>PP`OZVxM=5ZS9fy8q50; zo%ez{pa*RG6vM*6-FrT;cHco7F0WFw zCs76L#0?w}V>*`$Ueg*JGlW3cmzaxur=Z8!;o_WJPO{Iyp?i50yb<=)8tmm`K)#GC zUc8|G@{ngQWCUNDdLXd1eY*BSi})|eaH+vw?Gzb}2}1yI=pqkS-zl))E3qK`(2F~d z@AzSUszrNIkuSIN38=3a{0f)?z5xNBLA}t|a0j(`k*&pBSWqx8f9~A*`33nsMQx>8 zJ2Y&v2x`nTLnntxpuPjDt@g!>pST_;Qn1vLK2!>qWTj7MW8F?o+zvF_lbJhNHhp(h zSw~wn%i)&290rlvRxbD)h%0ewhDC77JAJU&Zj5MDBpZe%lk1bsU$z$m!m zoxfMDRCE)e8+UzS;e3_@*-9k;?(5)5!ad56S>jBc)QG<73Y%h`*E+5_JbpY8_|wD= zRD^dIZoL2eDlg(!(IfB&FTAghqplWU@HB~J8bJ*fOP=oS;AC&3A+rQ(l~j)^PpTTO z5fZVYdhpHxUgiJhxIGaIJ%rXJZx=oN}1Tzv}rjqWd?zqhfd zx#Cs-ji>0F_OYc*x%}jC(vr4tP@O9vM>&?E#=(jzs_cegV^$*8m3CflqG&vxrC~) zQ9g6IU1WDzH`%2H@2Zocp4>sm-$v-52YSAeil-A)V5#`(7ad%2tnVkz)Jl^`i>ixn z35zVr2MVPq7Z`!FR#<=M%N?|@D8DG87IF&^wD1VEx-xdZQZq=Q+n(GWpiTd)^ z9;T-saYO)tO4?$RoXka%i?wHv6_h@zeEeY1Im z!yJJlFlj92=S$eW|6*jq0p+wZ(Np_UTncN{LS~6llzcJ}E(Vw;`I@*q@w0^Hz}Qik zcVz(49|V3vjTlqRw9x=vyYflC0E zMG^9=DAy947)1D2`EmM#Ko01(f!aeK_@~@`645kLxwTk)byq7P3Qg5{cuKiMi_*mN zRJMy}44ys)^R05`^!tNQaB@7SCqBsT1AENu&zxYfF0;Ni#&p%Z+&lDV0 zSmlWgWdvY?$I4BD)w<`-qv5X2CJR!XvntkU5Ob55D@!7s!OaT6 zII|qttSM+?5@THvRsgPia5q=c()(#~X)F8(I^stR1HheJg-q8u;ZjumT6_9W*213Q z{tTLgJGtjvGoEH?pm-u5*R5r*hB-S`F44DLii#g;%iB`1acTZ>*n&36=y(r<#V1H( zemh^s(A_>edj{)c%72AsQTYJb9{_qmj2r#2R{xY| zc;!!h?Qc6-%VZJXBUpUgN~`>IKFqZk_GPwVWNN(!D&C~TvA`OH?#VGhsklNgA3HlM&7e*i3KfZfd+ z)E#2998Qp$;e56xhfiy^Tv2H9pvWx5Zsm6nnsR~ zI%}~Hdn8V@Z`PNo%H`$CvZK^m>TdF55kn{Fb^e$1x(J#GJhMBtwBu+Do05rqrT`!fZuQIN)U5uyoiWF%LWIpm#TcEQc|NWYEmsZmn> zeE~%Sc+xTjn#@(5Q8c3SSx(L%jQui8;1&&!glr-jIVsZzUPtA!+W^tc?ftKufQI4k ztgfs><+7>-jG>UYe0DW@;e=+r*9r^@6C%D$viT)EQe;z{5g!+}-S1SREMGRCaxA9~haWCb3L5Fo!y6}Wj&)ESh7giBH%QisujKsU+( z1q)#6eGhShx(PMs$5dpDqbOMh;B-m;gl@G-9X%MLE*c{j^UHFgD>J#>-c68YU^y#A@Z0Hx=*^qB4w5JlOCGeTMS}T~A2`$qR7LG&+ z6Lw$H3(NxM>wz>#f@fX@BH_p6c-U*lzp7vjk`uqQ)y{N~#a~7t9Md1qgqvnyKvIe= z?NN>UFrI9lNDCxao-BPr6#85cJ-1o=T@S^iEr3ncalSr`71xgdG!|=)5YAT|?a}a4% zER!SRR1a`kTn(atB}0n>vQeJZ@|eGe|HmQDn3@>LFU+J^M^FV=@p+bW<6w{vf>7R$^w^!e>7eN}I%XK3XyRvQlJ_)S4yOLGk$xiB>QGs= zWKm)g(+KN9#0gl!PBaI~ivG5o8n#qYT_DW$YT2uH-3e~oC&r^eZj$T9>Y6*b=c?M{ zM!^bO`T}KzL+yQ_&PG*ksv(F8b6BRdV{D-o^{A>NlI0nX8hqB0aJVS$P?pF$0o8l- zA=^@|tkiZV!1|8t)eQRB-_wj28C3rUZDf-sWyj3H;mV4i6!v&}D9- z?x%|yNzAW)<8|Z?43vXc+6ghPl3^QS4A9kf`e{%P;Y7Z&FDzN_dU0C%k11NsYs#!TuNF zj6obAE>D2^=&zigeY%!Gf+&u;$lPB8FeBH6qpIhmVDXF{xV zrm>OO84Izp)LRB;$1MsBqOjteV{{LVH%ofrsQr}XUJ})>!A@L_4hI=j+@^3J)Dzrr zja-NR9{yT-we233=Egz(z7*D-#92ju3sJ?y*pp@2YSkyB45;xj++YV@AYo{zV-Y+F z3`RJfM23AYGSE}EgN-EleUDyC4|=(NBf)Kr9qKv4&q3sUSkork9dhmp6 zNW=$Z6fn+sQ^VpN-4%$ub4ju6a71;GI))wFYe=eaL!E3PPZ02^CAOPLvEz~XzXLxq@eBikt;`1VWQ^bvQO^u>)-aRAI0?+>uSdueh*u~Jt_HHa(R+W z6H|?~!Yc$J0a61JfP6hkz4$`fBK@OP9y~gn5%IdaGApX^h_^hh@V_)7?34OU6nowM%kHFNslB&7fy-exD*3Z9B^R1#NZRX2yOxd@j-tX|vRvsx zi1X}L_@`?Qb!^8D5Tr{;kC%7NNge--mY#Ds%}$l<-te{LFK62&J!{V3{^qVApLHE9 z#|s0hvnnKgWmT0j_{>|L@$6eJ2XVh0w{|StZGLJ-@|CKnOqpSvFmwCBr@0tsF-i7y zbF=EZpR-Z{iKtz!)UI~&n3+*ljTeS+^f#zS#*Mk*=E-wA;?+F=al8a5=`0DnKhK_@ zqYZPmwwJOYX-pk_9(fw4?qcUh#9*1wrA0LoyP8#Jk(^Z}QN>=4j-TS++c3}%O;qR- zf9&!~hWXynI?fsuFj3d?tF`VhQD}TF++Bq;`pL|FjX;NHpwSWkQ4qR-cN6^dkLIq! zlR07HGuKktpIyk70Qjxn&G#b5189RyNb#q2_%3KG0Q}T(sQi$VU3x`;?1qX06+c4& z08Z1!vWYX%%;IuaG&I&3pC?7b1%Sd(7>y!^CBxTB(o_L_i1)_e2aGHJGk(4oUx*1Y z92h53u*8z_CT@7fbPhfbHA&=W*)`)_&sR+tP~1P^fpW&^1r+bO)8(TTik{_LL(!?O zyB^dpJuVZ^AgIA|*|Tpm6J=p`b$EkNEthHrY!nsp&8IwWwl+F67z-UmfC%tdOD!g! zt^6VzUOn!h&A=epFAau5${!xcA$GnooOP)qU8t{G=9QXW7jcB&``4ZUf#3|djGrNc zm#94+bkm(=3M>|0z1Jg-LO`CGrmErUpy7s5_;{gliWRo? zclq(d`HU?}d5Pevw3FzoOT$%5r7CJ1%SSa=1D!G!^BV~Y1)*Z15BfZZ-XXBCZbz}f zMsWGK!4Uhuvv%$^vp*Y7gKI{vB#dyXP_334B-Z>|ltzumG4EK4U&6Q()p#bvHQl0~ zlcREe<;ZejZ^5IYMzbc2K^E#h^YGe^a^}uD>cITcDQnD!fA(f9S+Hg0UK_x3YSv=S zn8Q$7K3LtbRGkr-YKE_tahH}k-bTUcG?nwc)N92(*8vUQ>+aY6{vs7CSFY<>Zvc38 znoUuV5CWn{esh2Hb2^n#8nf0$fmf;>{eWmXUE}=foZZXL9Skr8LcNWJoKVU6yE!ZT zNp{r=HF<082NaG^hiPd_=X;kP)a?YGd z>ymxN-=dFLBTw6nm)gO$o_Amf?t0q-W1}GrVJRO26#JW;tXG!5 z%$~HsufacOVeDQ%BtA7ar_z`W-^Ls2oMRL`@r-Gm7eUq}J6$@2TL`ps->LwP(_R~Z zksN!&OvbK024&nnm;RUiaJ}R!?z>*?XF}Dbof!n`EH)H;D*!MiWq*#t=qQX|D6Q=_ z|t*Go)Wh2L$qq;za(%_VcOLFl7=cR*(5Aw{X zTsNre)Ct!?NQgQhO&A~N!@6^w>UZ^1pV1T7Lu9mV{^HU!1i>$iYmQI$Da^_RZyFwU zURh1IJ~#GLok4e5t|G}Pk#Xmk`LydM)lHpsojgE==kO*LBqvhNo68dN1Q$cGvr}^E zbrYKAI_pelPq|+1L$P}vW^%;a)R1e4`aX*-r|(QCj8YJV&VBoS_&qDQH@yhmBW~!j z72s)fx1q@PrA?Z7T|q5r2C46;-}RJs`)f9^jL14PcP6`qG6$O;K55-f`mtk0JmdUx z&F6UV&#W%8yV?}u6#)U9s@l)+?laZ%$eqpAvjjqD3~bj2kig@wDmnAJwlq~#MjQo< z0wAE@dF1CM-z5fn!8;F&Z2msE+4VH-&$plluDtGUj|TXanvFyY?l6>A4AwO)S7$|* z>Lb=k>IUSFPX*LEhQ|4x)bZcH|Dg=!=+N!DtrNizVEOLX?heHZZwR=LcQ? zqJfh0k4tv0+H0rCXjWQEK2Tk^R0TSz4ABO=U$>mI<~d5=YJP+Qn~d zv0ZZ`$r`)U?UPt4QRLkBS0L-@T&L>EsWdA5n>f`IF1yHpe{J;PMl9S@UW%*5W+SC` zb)0Bv!>SDsZ8!B?oocgXqY3Ez>d6$2(})&3h6fpaJzfo`^n>}kmQb`sIhbX)7|_B- zcW1pRw_ecY=A*|NqdGt~ljD?tNwRS~=T6+-Jo@rk)izgO0_UU>;_v>~QL4KnyniO{L*dmL@H&=XZSjBD11_$Z^YuU7B`6|eoK z_V?TNiv@*+37={WI?8exJhgP>)Umye_M;GCGQ7aKZ{OjmOGE&RDZ8_6lVIa)!mgKl z9(_u;EdicWSxhQ6#C8}{z$B-nk{?Wbo&7Dvl;Qc#eftiEM-ke*Ec>MJaVBENWAq)} z-I{>Rtt=rDjqWhm73Rd!9~Ao&9e;1f6+|~=yCQkPzO`zYKy`9#ijD78{FD?c-z)#! zkzofke{EVx4xM+N5l5586W-E@p~QltUnq}Fg9a&+J7CTo?;D4*BEn*gcH zv1^%E;~sb!$|(1Yf1J0MwgX#H4ANj;HBuAEt=S`JH@&W{jwd>fnp+5;KzcP)#aoT~*v{8CEkgnrcCmQS>dNR$^!O2?c-m{I+o|N6s zEJXx!J2Fi3h{_E2V5wKI{5{x;DzJcxYP{xv+oA~)c?S!P9Apksf24+`(u`N9l7TJP z)46$Efz*fY@4smC3aq@;6WWV~H=@&AL+3!#UTP#~^F&xL{ zu{cFSH#f&DRhRbRKA}S`KMPk(Nzrh=gGTjaBGiA&A!D+SBtW?`z-pSVRL*GpK}?8w z#~WZTWLc@^85htoe9uVM5CWBE^^patQfN0}Wy0TFQ|=K*`^33hz>6PWc$jiLuw%<% zOW6w$iG-Rbw1i9zd702=rUsI8!!C2(%b%eUy?xRyA3-8_AJL2e|4F7_PPYw8zFKm1lcM7@P>BGu^nm=q#aDI}Kb#C;wOmCV$4Dn)*+{xmEMX)P7pr+JIkX1G2>VMn2vuytfzip7Jk9*SSkY;&W}w!6 z_e~Z$*1k$NT0&X^u-A3N3?P8>sVywF--nS;jlG0Z>7(((5uv?8aa0sCS5mr)iey5v7>V-y5wbK{tFU%6 zq%8=tDhRr-VPn^y$vd&UKf^Uew{Y0fLjHhznYWCMdwB3Jsl-}ae$aGihS4xN<;H*w z+J{aj5MK)x`thYYl^!+6W&K}pz^7_-0^8zlSn>H#-1wVa$}1}sE|_Wbki@ycHV(#8 zm@qFFvtAQNPFFbl`HZY||_+b(4Lv`;K zaT&X?`T}`ZZJxF+!NAC?4{XNk&*82^QyX+5_jDw;YX57&!_w+GFu~D{fW+mKR?e*t=oij_I`ubxA42Xd zgm%GMz6+F%&!BQHy}re8s8fP@U`(C@xnfU0QjDovPz z1;L>JY4TxXR(9pqP8U5rMAu^5*@^fJH@^=KhI}BYS+bc0^(p%}sx?`;q$z6x| zuKkE;GZmq84tSBvVS**R#VG;hnR!Ulb>|i;$zN{_KcQ6@0jggbfD7Q`P7#Cw*U`i4 z)DI=)W*60TI#~9rXt=vPN{oaw_KCHO#j5XeA3bB=4cFsoPiRx0qxV!m-GAR3+YU>? z_|N5@NfL4{C7ZTaro~Eruua)vC=DoA1{kR_kdb3a&(J&K7gH5@b?dD|m+$h*t!pbq zE;V~cq$;B=s*Y9C1WBXeWh{zZKOgd`n5K$JgYbT z&g>0NWPG_5DL}DV?9g6lt+5AId&WAXOWs%#Oy_Ye{5<$6sGiBMh!G9_LCR+Bphj4z5{ve)*2~XML__x-YNle+As{BYaaCZxEs>j(hi8l9Nx18$;EvhOim+4Hp{~``}xoYmR3vNiJW< zvcg!zX%&aXR3C7?O{x@(cS%rDu`8vECi%GjR2Doc6H57Ij#MlcTKzhSA2TG5<9ruC zB{GWo>l#Qpy6J#^zb@%Lu($|I*1thux!lgmWV~v+dkVQOu!&G^_qN@fU(q{KQSBKr z#tCzA<>GlV;A;P-@LbGL3@!_}gK^wpNZo~uZgsa7(0w~c@Gz2`M+iC0Bi9ZmyK}zf zkoGBQTQNE1^E{>`LD$MggBN-2P;u!U?K~Z*?4U9Fj*vhW$%KWbPPJMH@SG!T*RwxtDg9m57Jf3vQ4^;Q-)o#b4z6>=&c z62^kR#R@UT__}q}O=B3>?1cwGr9*j3HI+e@tGS?=J;zD}%PEbP@+ikmQ#)Ib zx7ANOg2ai3JLJw4&Ahn%)#mw45p}71&v-}~_zH6Vern6VW1t6h zZ#O+t+1g`eknB5jVom2i%9VF2hms}Kv8r>(aaeK$p-zhpuW|NVKIE=br90eS4woh+ zY!7ud>NG9#YXd=#(Ns5Qgtz1|-ATh*IUp#8;#3!qqh0e|Cz?cH0qM{H+gFJ=N#s?>2A#xBngtV>dMmx(yBweBPv<5C)e6@r>E37i88?^ z(D~aUyGy%xbZcKnPCByh%Hy=rRKeg>LrCv=&YpRHkARUoh}p#WkRKX9WA}EOiRaCr z(;Ag@wG?T@K7_6I@(D&9jL02S{{)Xu&59AU=q;R-Wm{vGCq7I;Y{;fZih z_pNE{Bb#E=L73_LvN|#=-5#<(evsf?eM-a!=bTd$!Vv%Jmy-n6t+MkN(`%2nFmxs= zR8WD_$@lx&^jw7Ja0kw}_@kZtVPf0!Lp7@Q5O}wW50FQeVB4KNE${$3eEb6rlv3|6 zfiYjdkazAva5>j{9%qK`;R+K|Kww)rE}8=kIHx;)d^)~0o?v;d`M;63COm>W`(uWj z)WS7{$>*M)+%IYmSGbvYfU_bxhyovUDLsyYQNA0(FWaVG1zK_Z2+@)C6JpQZ`W#{I z+rt$m6USPiP51x zaiV0WjX^BuZH~zXMpUV{&6}5S`TxQ`K?Hz>EdH}Ug4cCRWIA2M1Bp%&D(b>iI6_k9U z{ffp>S9Gta`7((er884KiDRq1q&xYj{Xy#H6O`lL(r-e$CRyWs_(UOfT3>O@b zLPH9k6-N}AIiqA&okL&9vtZR?cacPH;HxwXWW-2qP7b~~T)$w9YW zG>{-7w0o)l4Jv=7+BwkimSZmp5StVf7nM;UsI9TOuhBRXm@+ihk1=dMt|qdXT{H%2 zKva?Lx0dl$l#@^pj5&rb|3#qu;ohe7`4i0df~&|P4g;ON2HAj9bHI$d+j)GAyv}** zK#%Qi&QhU$sZm?#<8bU#oZ9}d7$HSla24x`z`OPJ9kgC4$}}iRm<4vU@9EOi0<1k7bYI}?*pm>PyEM0 z=!L!Dq<1yFQ!8?UQLuHpP|6Yo$C939tNv|)vo#!E7qT;BQqgQP*co>GHASy zju_YJ4UP(4xJJ29WA0_yg^jnH%FDe0&2ND#b||FNk#)O%DPrnwk=ysPhxwRomM~i- zMxW93R&8|kOl%X>6rTu17{`{9A<{!K#x>03f|liaQJ^;qKJ)dFeUmiv_rrL6CGs278iSnEUd@u#9fvXM3 zMY`rasai>EFuA!zO;TnOn)sSKi~H=!{dY;1iF@PRIPPUWSA*;q?1%SNP+tw~{p6^g zO?wT!EGkbDF|fSq`{yEQd;A0FLC#+s>DK4griHnyAa1Bp>BN&vV#g+H<%qW*XF(V*>jliLReK zh&hJ?N)eP0CfXX|u21y^)?Rmo$C4W$KA%VCxdxG2d=L6z<{jfdUORRJzf96s zUUF%lrFTU>WE~L&Yl5|$BGzUdqNq|~h&~VIjE60-4`IbidT*iEgy#?w3$^4NiX3$X zYwAqYeDVw?4ELkp2F9tzLkE}RRq!!T1#SYx1|t9}g> z;K-qHus~}17+T`h)z zXh209zkPCaW_LO){sXCo7kF<5=sj>=2Au>So6PDoerVLep+*S>h$IEgj$ z{`vU0-Q-ZZfvU!3Pg@Dop2TS(XMVYlI@>qQ@u6y$b(R~wqVoUy-t|yj^*74Odvb&; zMTtd|9VY}8+=|ttZK7#gJfNwT8^ zIf*4YsjfuU6Cm;l5z2A`Dr;gFN=A|1hQ~w>SimJL!q6UebPR8g+vp zu%D!QFRHOGLlr)Wo-eWb`Ky3qsKFAV>X|(5Z^1zU-ffuV2ycbI=o3<%$`ANSpHh`L zmX}rtVWf;+TAo=c9y9=%tlCpEH_-HxLqd)nZ#hk_rC{T}t#E5#ANs5b8t)mNltm}O z*d)8!UE@#X*H=T`E&rZOE`bv|hpLBm``BYuynZ4$$K*SKR$23^U)Gie52r%!`6c=O z#o5!onYuX~glGJ19YOc7sGW;Gcf#Z#2r6Ff)uXUFpl(=f|0vj%+@k+ zUiIlmk+ePe0rVj6FP>Y3veEXk#N=JP4sHvzh1UZug)t$PaP9d#8o!)H3&h@3k%ifzIS*NS)H9S$v|7Ke`8 zDT0#x`{i4h>=z?#nA-o2+rGX~GD|-wqw9;rXUnK>?~`LZy2tjuq?lhCy^H8@Y$3NW zj(B>g-Y3wl=v!3>Ygp`XL7+h>!VqH0?x9RG(NS1m{kw<`W(%c-*#j+g6dk$n zEjscp_k5`YaC{W>prZxziS(k#k#@T0Wj^rf6FrsG8QwtQb9oM>*ROyp7LL7Z@T7P6 zyy9;QHT;@I%y@@Z>RF1@9^t6Ecc2>_acP(N7K68M$*WPnBp?);_JV-QhZ0>3 zd0Q@O0UPD~OsN3#Uf_sG0A$n8}P6BKGPNKts>MmK4+DaDSqJL0mLJ+AQ}a;%3okGq_?*H2y=&A6rfV*ZX;=*w=^E2 zX}3n^6Gt*fC+vCX--9^gfh}RHegbP~6Mbu3KDPOH_+X9JT`LHXYoy;3^YAX~^rOFj z)h}QMPeiz{PYx!9?b<98NJ|uG%cEY>L<*Otl=8FCBaC5^9Lz)q32X@tWF?r}R~b9h z_*cIC5WfeOf@|gsyAZTL#lp@)>Li;E!2F+Y@!7CK{l>g-ib&w1xy6rMJaV=&~|Ts=wFfN*q!HtCjBol1`o4- zjg{}J-#`ElM8CRp{ZeV`@{R)gsffl>=7%iyxh#mw{_v7D#Eopb_^B@n3179G;hDI& z&D5t$41?5{entF)mo5D+9Fq+26%oO4xi7cM{A}zE@&tdAcA}TAXUG-}t=Z0c_?*l` za%$K$;t8C`4+sqK*#=ts*efRY$S8F!;@&Lhjh7S6krBnqWIr!HiK#|`U9+g7mI7o$ zpom4$0)&|3Xf5i#-1zl6%)m^_)UCB8P>?A^aW{?gKl~fp4AqD4{ixrCG1zz*x0%b~ z23WX$gnty1Y(gc4=zQKtqxx&d@CQ@W;O2;MH}(Y3~qjG)jHr+_H8?T#xJJf=vQE938GUxEL^>#60isjO~e>fIY6 zI>zdaeZRDe$}Ul(G#Ap?x-3jF`WIbW{f7lIx>c!@w}6S=x;ODXCA#Jo;DAXNh14LA z4_LKsnbcFx#T>-yG?LbuUpK^b3}s}GAu+!j4WIIUvkOXO=kwXRzA71K2iC7K&-fz| zml7jrLPkk2WRXF##x39Ntq$e3ZnzZxl_>yJ;}CqnIz0Zd#efAYXf_WZaT8C0FPJIo zjSqdA^Y{f)<4Aq-dghMQ2&v(h*h4y#jB&Fzv8~04a8be}JxSpT@Vly@>DskM(W2x;RBUMrRKB1N=PW{!OLr~DG8NTu6Z-x^ zhX5nN5zG{UxY4%dw?o=zlM`t9GMDc}ayoEy+vE zq8DIV#ldV9TU!?IQmthY6cj%vcpIy0StG*o67n$7hdtYwi~nT8-ZaK*8Ff`tw{I`$ zpghNv7;FLC$(AwaNX*@3HWI|cIE0ChhG+~mmn#bG@$VNOdy~(&)kiA%|6TJVgWT}z3+)2W&LS{Wvdj6{+K2@jFf;f>_;XS95zv5B1$ZHq zd!=4&;892bX(}~@kb%Kc2{v&26TzmZz`6o%Ag6fTRFaI0R;a|JrCJSUg#2VJ5_#_3?U{&^mGeH%$zf=UoD7i2-nSnL zXqk4+s`LLVGdq8?J!>B?0!x-h3Z>VGk`>KTs}0g+h4?BL$`&uKhsUt6YgJVlkELnZ z%5FAD*S5%AnKnleYsF&y72Hv9ns9qny_X(B@?>L`v9IN3$z$_)X_x*I&T|ZR80vKJ z((`zMtVk*9kn_q#1w_~t!db(Y`$muY{r^nQ;rX(;%G@rwMe^KyB4A0cSrY_jb)JN2 zB4LzWtt@MkTP-g$jze;Gu5G#ubZ;=xQp94}Wy+K7a?2*2TpYtY_~aUepiVd;Rh|UE z5>IT3J=vd{G|si?->UHy^aa`@H}o$=^8JF$Ur2u!I%WSk#KJ3zu_B#$KXosm2b3Ck z5Uy%BT9$C(w|%yV$OEr;&@~d~&w+#Q10>CeGe4n`Fnot5)fxl4MpC-jx|tKTu4r#gt?Pk4I6GD-etsU8rnwlAlMxZI4NRr$Pkj(xb@jt+xCaRA<9%bp!e~+i% zeSGfEroC7ima9uCl-+5NzSt$FnbuP1oqrfvSU4fML?g39dnhGZsrx-OO_Xje~c;}Zr;&bqPN_M~`oB>Y+DE<`u0*F2ZGy@98FJVfhYw z+!#6oP1sK4%RK?f)Au7T0{vtqdN#8{3dQ5%L$XT@(s_^Mu1tI9C3vJZ+K9!bkYl6| z+o2w|Lwy^>AV(wW{{AaHi5JLbC^I_by6=-wfE-Y8lPtT+(ml^c&J34LTuh;!4XU;+hxvB@QsJp%X+KgDES&2oeV{h?6NEis6gV5p!@0 z@bH&+=HWzp;{n@U>p8;!&A|f5h6RvqIv^GhSpz|uY-b|*;eRMzMcgArM}nq^d?WM; zTHP!8dBTO?|9PG1sSDKGc8CfIMenVn3{t9&8F|lDS(i##e7ILG+AW7$ke8+uzs4o2e7jwbw@U z>7-9=8m^emVG>D(lvS$tQA<+D!6ua%iY0Xhw;W1F9y2n5ko|^D(`L=oG6IB!THZlD zBm$8e`sqgjw-y8bq6rU{mg+2dDV!<~?yOov24s?5AgGE6aj#QLjTy;ptkF*_d1^!} zq(UoBEitV#!bsLlAc;BR(F@nTX1Bz`5763{LTGJDbgZ{Nsq5iJ+n^7gzy;{jbrvsL z7b%q8s=Ux5xAl4#3h@Ldesi5GV$b-Vtn031^hYF5HcA=wTCTdYs66EDxUtng$#3l7 z-Kdvhlzb&dihtS?XTTRcEJVlM7a*^-9TTgAe*v+koD*#fnngS1yWQGbD4H%fIC=(O zEIUtmv|VoA3`ZB^k7b>`;SL^1z-2&2-yn6VOKDk!95EexBdf|t27rliNYh;2Ku4qT za*E!Ro)T>Vt=OdTZ00#Ql8gEPTR^10puj$jx)tsdU^n4#?x7!$49U<8$@(C&Rz%HY z4kS>g$4E=y0@)MF6CHAW@)HHkS*~`}wNoLq2nA38y-?705W~fexwL~;CXBKJ%BnWG z0ZWw;4?-+fb|((b-3HzPPDTYj)cHBZ?jzmwb#njXGW>X(gI+vt)r8DQGTHI6sC35B z*e#PnRGm24!5vnhK0{&z@gcr~F?3Z3{(HIkKy_bl+k&a{PIUQhsa7^!g1DR}WZI+u z+cF%lytoB#nrD*2%kiwHj-CE0c}%@4UwxJY_O;X-b1eH zS-=AB8zA5%iQf-v?oo!3&tlqI+o(*3s}Vpd_X|miIv|= zvRr~!SYTnCL+kV;_=0M)ng`u;SC0i2SZMYK*5e#7hxCqX1CQ2}dn~o=K3D;gc&V>7 zwR4SGWbWBuPBK@m7e*O&T6t1w7H{V?gHTk+v$*kAuAn24qe=1&;rKE%oN*83zQJ5y zriOHM(IPx#TOA@rRy~>MW|i!Y;&(?TPNhoj=11)glm^901E0|&?~F-haoRC7rh(F; z%?&RAA%eV5H(c(+k|IfwuEKa&_cAO6YyH4>v&;5INAHQk*(!iNXs_QiI8Gb%JS6IF zkSs1v7SxZ}-V4$${-Pm+I0?B88)5x*X6-X8NS~|Y>9&=FQn0mCg@+e*a@gO6;^8Vt z{*KM*{AGjH==G`LjyD;yIMGB$Fn6#ey5W1`F+A1fx0tSXvTkG9=kEzeekIVOdWeT% zD@DPg1J`71WBib9g%}kA0dhPDB}@u}4SLvN$nilp1xXh0|~b zLcv=dZ+)_waMaIo*vB<Hx4Ut3{LGjLL73n&iMYJTn zlh)2E0A7cDR!B0a4|ZW~8d-MC95$ItcLW1kq~3CFqKE0}PTUn?mwPtJnfDL0zYb>>kVx_v5fKI&KdLc7OPLp(GRa?oioM<5Vd!9|6MI=PN; z3v%3spIysNBIQm;~{^ ztNNZ!|Gw%weiNV986a;<`b_*`@I6#$3n}2V5bSyXDB~n1Y2?eXKAipx^TLfo3o-V1 z2_o7v4ngH|gNEY5l5rh<63jo|abtYc$wOlV(f8FSoum2=b*S2@)PfjWy^UWWXg=7Z z>;Y!yWSl{;>-tvH<)D|>*eOTDhq5Br6+?eu{WKL1$daT>k9t4)=MzcRijV{OlZUsEkszSUvav0?}LG-bs3FT?5QPhrI=Lw>o{?i{9rE|`}{|@d&ugT}Z zwnO_9rQHinM7g5FUA*F%!zEI(QkC4Ytoghyf9OaIO3!FGG zs+H8Vf-{I`^VNIPA>D5ecoorPFhSc+rvM#La#mt4|8cSj39iKw8A(|&bA;p)J{l7E zV}VmH7~@KjkXv{;3CNN##^u6zUeOhbTn1>8qGYKKG%~=C6aeyOW>7)MB{C*j6W%t=drUN zjZT@FxrnJ>8arRqqD72?kxwddNp7s5RI#Y4Od$}IrBp2{O(AF9xQJ7Y#9(vA?Ufo0 zf6>|^PBYbiOEeP4I!?KMr!nbb^EU!ZCDUoDs zN}>77nZ!xpxi5>ZF>Bxc(W;WL!^nfNj<8g~MeL3$_P|8M$D4+YxKN z3G3bFwQOPn7`AgXDDmqB1`I5U{}^=1n{94PB?^eUCw~^}wmV(q^?-wG5$crjCH;6I-c2rj74)Wp7*!5&V^(6 zi&5U;WS}*_*@<>8TXtK}$C+3Q`!oM6ZWY2WPIQx1+Bu9e>=ZunGt8f8&*k>e{Q3Mh z?3&5=<;Xd@zSZ7x&==|Glp*04tOEAj3#m|+6x1%v<#DVRgo3$|+~C&!ef*4IUlW;+ z;Ey@jhxbrhv8i}sTjup%!xu<_U$HGB?&gCb)f8mB3!t=)a{6FKouN`$Sj>#n;d zKIMJ=6rlkS{v^jMux*}PC~f(ZfFr}<}uK!5|^fBu^ecX7{VV@A4p4#l@6SF z6+JV?=Wl_VM!_0lU6Y}C)`9%=cAni14TX}(iI!6yT11$qmDT53`l~(6oSgKu{BsIN z%aPd$rJqkyERIA&k=l?}-Tv1Yo%w))yw6Cx)y{>wn0ejgE@d{TxI6)$L1|;A0kM+D zMYqRdJa0^K=kc`s*T^qL2hE&$P{?~b&1qE{W;PZX3ZaJcwhDH%tdgP%u|LpZ2Qlks z*cjY2}kSJI!awb%ZKp^^t(rwsn?{&1D9Az^m$t| z;c?Z4eddLVUJ#7oT?)1Zv-7wcl~!&+(I*C*;nSjOE622v8$IwL9|A!l^x?Y%5kgzR zrDn*;w!uGyPOAl!HVMy)dIwS%IgKyGn3Z5JXzY|MfNChL4%h{MW#|LW+A0QX5D>fQ z7*<5rMGfX~gC?8hf!Qf=pf@OJs!InLn3D_#u65d=>KTdUy&cp>&Y2e)m^Dx@WZc25 zm*5fW2#P3^uH3_9J&i94fe`uAT&430d5}^c9Wtw6T_Gi#)t&!nab9JNxw#qgsDAgpG++HmgfS$nqH+eP<8|aO|ijA|NJz} z{}7-hr+qNxpS12V;5*;YHvk1d<5qUMRgyaY4SN(XAxUR_8|2cCPU&t-UQ9OrgY_)! zG5+Bt%l@kkKkX^_?H>$Z#sHCxJC}aBi7bR!rMjPV#?7K)ZH*t(AH2d#CY1}ttTAz< zi^en!;0`#IJ{`gUB^+=xNa=hO3}7ZbUK4ml1vKE0>{ztJTlS?3UZ`igwZ8-z*NNO2 zHGT}500~y`#Ij{e*Jgd8b|(Fxsz>Obogy|nV}hoT_NBs{WLS3uTn3ecN_voJU$-rD zo40-B0=5ukE(CuBjqQ?Ru!e$?H0%3de0V240YntQe{zP;mMrV82^!)i1MjL=(8$S) zn6ObLbH>eMQz9^`gZjv_yj~+0(S-=B4EPB!Hj9gOHGY_LTR>_jRfr_4F>zE-5Io5i zyj!wgaBbl7)BFNUe08|lB00&(=hx^Av6$-=&f-y(=$>8I#+a#NWgYYX{WEzZzH}QG zf}EHmymT8l8O_8j`mvzbLW(2_nTW=t-+yXIGGrp^9Kso>?#0!pv3Rf9^Ueen2gpE8 z%)t#dMw-&bSaOhv4!IjBjg8d?_J@q11!4aPrg7 znc`|Hlre(hA-maKB)j1CdKgS^iuG8R_Y0L(IlE7l)05| zpJKp$2$zMnfk<0uNShFDyZLY=;qW=Z_j0N8_m4B5=}mnf;V~a4UP&l{VxWDMP#ScS zx130diiJX2nj(?NQcK~oGCBCEG6I-T8GaE(hsQ?`E0h<#^qd{k$J7M) zfqik!c!jkhQ~)|MaYGg7DWdvzIAdo0ZbbF|? zDZQCN!~?2QwOCGXKmqXcyV*|c_o?I2JNJom^L$G#T15tKszE;+*=VN21a^jMh* zq`*v(%%1MdainL;!j5^#JH~`|EL0pj=g)O9y3pzPRAac^Pe1T0*HG=_1#}eJ0zs9~ zbFZ8rie9JpM`H5*Yh=UXMT1m^OxGcRKP(h02q-r<2eK*{7ZvFj8JvH9PjEEYt}2Sb zzr&#-i{0l7Sf1m4NhZ_GBooBw3XlH_f9kDmI3( z#HDx?7s;d;9!-rdv5iJ&w_o7N=ntP7QVdvD(1PZ9dZ{1L-nln|nOtejiJN%wBhw{0 zS|^3jOz8EzE=Tk~z@L1?#%%Ye1!5oo0dN5xz=Q2y=X#j=A^D>-%VxBD7qbc=B1)dz<3uT`br*C(A-)KPzVYi#u1k`D9*l!4T zTf7=$TH>On(s0o3U;Gv!rBd=2;m^}`2If*^(sX2gdukf8c3(#?XX=NcG1lzW8|Fq9 zE?4)Z5*Y*qfgYI*pmgGeu+vY>mmn?D!a2AH_XN+qpE8vw-wd~8wzY^F47X&pw6U@Q zNQi{a302kZ1TVL7s8olO>?5Pbe(4}!8Sd(rV#&b!@|@TA-#5w)HpB0mjx3)hS}^*d z)$^zsG97g;pifb2QfYb;$gSY-N@GXP)y=DTE6CT6L|iEONfbL8JF$WSzH%pfntM)j z8P{R0|B~+jpHWur74yGQ333 zDdlWgiE;8@3-a}^H0SbuDB&D!?YYaVqSOB{U*Y^v*5T!!TB$0*-nh*I6q2+EWgU5> zW?td2AYVVEKdAe$l=FPr!mcieQtcF-=XR8Ll9Z_iQcA>1n2@k5`xwUgK%pLL-ilpitth%dM|oF4+^JqsWHurmR*p*8R1Kdy&N@vP$pXUKryYRHtS z?lmM&Pr6fQ80lUdH?f}Tjuq(&0o=eUikm)wCHJe`)J(tsiH%fj;!-@Q$9|@h6oq1# ztN2;>)Y!cqGe z`_0e>xu9VnZc)=}%S`U#aI-bM z4>Flf#N+D(di|L2E8TuZcCqg-v96jy$@6jmuvR#pNi#4gdN zz20XzmuTwQ58stckSnhrgR*>`t!*UI(8Wt{(wpMFZ>#2HczG)gYQ8%CoTygpa!G+` z*Tp8Jf-*f!{l2v~F5DsB%g0m>dARKstu_X3@%oHC_S#zupgz?vl&us|YA?l>J?`>v z|E4c5X?>y80`e#UuUVZlRGqzM@AnqeJvTiwh5jn~^&ehglxB}vtyF7Y$R?}G%1Tr+ zSxI8@p4(+%w^8(k<@jd^cJtT7F?*SIDz7z6E7YbB${JGLZqdpVN^woGNkdvexHaVa z)?R9;LxPt+U?bV!2A#H(88y%TO)@8=1yh+a)Ge60DObz&2&+^=F1t8RENe3ra> zwfX9vrM3di2SGlJe~hC%?G6W9xsBf$&}C1}eY&n~wRSaWj`!rS)VOAX6OL=A~#G9op`tX#d|CYsk{}1lioc2QE1qe@JR)f(>fhUkJZ7z3AI{!mvhe zBgP4CSnBm%e(Qh8LjC+fXK#8eNta^AOlcTd!?}fR9wmuC!XwLzN@MV39Er%-aa*IbF-D_3ixs*~5ZcZ2-tgn0bE5Vqnv|w5 z`iUlw9e3Fzo}<|jXmn|Y1nT<|PqM>-Crc!_!r`zhGR5@zh4NZDy;d%-H>TsC;fP$b z!-@^s!beG-Z|#stuu$NgldcWxXlpaiNF?6Y5oVr-Q!1{m_J}zwPeOG~Ny50Zvw)u( zONcB65t`AA7PO!jB_Qm25C1Pq2Twb}}3HD+K2+=dtMV%zN@Op|Mx)Qmg$)ZXKL_Y-*F5;4Luq2@idwNGi^ zf^2lfpXeNgSD99;p1@ffqKVd|UlP|!7A%lv@$Lqjh(;)tpwS#(*YS3goJf$-)-gN; zP%>-b?0YH>Q>-aq>Osmj_PEmonYk})-`<6VMB$n5D-ZOw!nd0;E9bnDzwa6J5~+kq zs6h>?Q4MF{4%}hL2hI%DB9m$HI`7c5)p|l4Rt--@sEh=Y0QaH}`xVJo+2_lc;_}fS zKYIys8V`1kRMguSd%$g(+xF}GqSefr;jplSrlnKk;g3SM-~(oR3{{~C@Vf9`ORzX4 z)jQn3Ba2upqcz{9m4_TlE~cu>)6%%Ry$Xv!!Gz-)P$uMV0j!_|L;ZPqOwxGjURMp1+-~6SfCNCxVX%_iq5yw zZ>xc#OgI{q^C3eM1Kc{~2~_x4fw9oy%-3u2i#g8Vta%-4s~+Ig!8fgIMCW<;x=h2A zM#q@!{HQ*P0>=b4qc>y7@f;ybDX-p=%{zU zbWjk=XMcDlmOQyy-r0|hQ3jjA;r%0WMb%0^&jEZ8ji#+|xH-HB^9-y-(63NlnAt-I z`GaiU6G-TxnM`h4(mpAkNrRxsLpSPDv4CBHlc)aJf&~_+u)y6PJiVOv!vW8hDqP62 zh68?Bs;_U}$QA2c6LTs23!E2Y@`QlVPb2wHL9vH!GI{7=6cVMx6Ji8Xv4GvdQ>OlE zz=8@?SdjOVr#I$1IN)h*c)G@vJ%p|PxN*3W_I(uf_Tc$^g$t?kpJZA9*zLpaLk5*o|^A`TjH~cw(1VG+~;p>L^I(C8jz*56E(q(>Yvz9BRlI4rk zuYhG~gd_-i7@}mSAe3`aAya}+A%Qu`DCH25EQegs$``awB)q&Z^z3Kc!r%jXZS#;{{yBrqLnA6v`bFO6G-oUCQH6Rb+$S0HaPr8OJYg>udmX^#}x}-g%L^B_COfp~eWKt^F z<{gnK2+cHE^rPG_LH|186xYmm^JQItZOow!Hij}ymTSqOn9F@jKk?W8VQy-E89c6l z@>;wY!VpvnDdeeMX=xc`mq%O#JcNgF&B2GOg2Cp@=TXHviQ8@`E&Sa?O_>y%_M3?&a@;AR|7SmfkkMu-$B{vz zN5OZZ9|PD}$=2J1Bf$&j*uV65)ev1OD2X-!hRzY1Vo4~h1dqV>T4=qvMto&BQ!FkC zPC2(dhA7?wwq&)nh#CmCSX`(EhoJFj=4EE3$7QHqeV3oD zo&D)y^3Y~G`wut-hgm>ov0sy~paxRMex>#r>LhVEa=Nbj-4tL)=M4LZ_V5|$j_?|7 zZ0bfkrW1059ig^()A*!#o$&0Ie*VUe#K$F7NJG=1?nRIS>gW&m(Bek4GiRhbn6=vV zI)Dl^0?E-d63juzX9nz7G75Uy+ewaD33(L9JRRt+ZV(*K1x0oS^o+%zVyz>h1BJ3E zmnOmI33+WuPKUc!oC5B++tuszA98)^TuNN4-ps=FWH znfjYq9XUq^ukvlmFO$`wqI8#O#)j+HF1)5)|$dgdw46a?EqxG`4yQL5@gHk^`c5OQSUdE|_mG9+GG9z^p6} z>VjnI4@4`$zux&W|0N%oQxKy_t=d`kY-9BJ1Hn4 z&}w(jX?^j?be9$J{8EOD!uI&gUn*d%98qnB4dnvYXrrm=~Hrouoox{&0d%tR1NZ-v3D=$E*yI`O>tAn150S! zN1ex2W{0SO|CrQ(y}x&IKq zbte+xO_T*?F)cw`i^&)=c5^W=FcY%`uE==wTAj3}-3TzY_}OQSIsz}9fo(altXK>G z~p7Lzy~sPIruls;D*6&lWu^7Af^lu}_;E!)1; zUqV@x0^y-%qaivI>B!i4+Mp}%_Xv8r8n6^c$~+2j?1%hqC@Y>k-x;IkF zoE>b{3tOxRpr*SuXvwV?z$AVYA3q@%-YTFol9E|31=A~)M1#%g>!7W1EoG$VdA*yI zC$dos8$%Sm)tSR)6w`LZ+`8ywy*@9H11=>H5EYigK5dfPg6$yBz^y~RC@_vQ!n4OZ}@4vn0=4x69&&0XEX zp%~t|`EBzfFMV&(U1p*FeWaBW_1+}5E&J$oQrXla3FvIzlPB6IEb8OedILEfxQww8 zRaWRwHsEa!!A@$f;#W2Iut>SXf4!P6R@CEOt)7&DZQ%)B>SQE{qbwrewt~YDyRk zShJb}QPrhKD9fHa+cqf?o=y^4q3m9mVK=~TqC4Zi4sU)XK!Iv{?8^CQkE4&cE>ib1 zT7#!XTMAAYt+86-9AggP!F<7FW5sA~5|^f9qa*BQcwWL7$Xx#H!g)|5nyN^8e}Ye} z8mlT1@iRESq?9!&Fdm+1G9ZKlM(TQ7odK6;EIww+3#^j9&N@AnMP`l}x+3-Vq{}fX zw}n7;1a&>J$?SSqOS(c8VFGrK_AsdpD+ekN#vv3JjyqyKYf0 zGsZvl`1u;V!ts)uv_e(rd@20SK|4Ef0&Yf&8^lj-H51gUN{R|Pi`0t>isqHH2vm__ zA)LtTMTUg&BmKtw^uAP79u?%G%Gkyk?UO95 zTfo;dhxSF~aJr(Fc;qmU^lU@JpN0dMs%vwYn#@mvqu}*=01OEad09wan-8f$lY#?b zO#JSF%lf)%QAq59c~35(#*?FY z5~toJSo~&)&I0VCnM`3rv0Tf^AyN#~KVQ_QiOw^CsYbSDH)a-Sb!N9L^eA6>=uOAU zOl0XQmWlnRb%=IJ_zIOBX~aPN+bwN)cbo!1?XHn7nAMIbN2^}IC=Db+EG)``Mmw;W zi<1GE1g;WLt3|VN7W;E>=P0wpSJ)Tnm(;Yuk&5cf)tPR8(c&%O>i<+&l0OXN+w=S= zA#_!r-YaSr>Aw8)0=EIwep__4B!{hQ4Ze_xpZlX9-1&|rolNsXW`tyJ&7@|x9^z&= zx8~3dZh2>gb+^g0^H(Gy>%dcG!osa}q7&To&PcrP3E+QMX_`&sRc{fgZzlC@9C^P0 z@anSGe}+Ev>N{EdNjfUPgAg6`CbG|lo8TJle{Vp(1>0Ui8)|8LZ=%tEM{OmyC$5}=3n0j|J?Wq~q*v-L+m?I4 zmGLO;aHi|s7qNR&OW?t?wqE|88)tWJmlfxuaF@MbyTe6gKKPoV!FpeI08UUg7$*4x zxY8zmHARw9SCmca@my+GL`FYwW;IyjS4gf%NHP`_Ws?Rxm)eyQ+c!B}N4vJA1#d)6 zASJ(o#h^jFpG#1(=j=DXz)abNSx~3uWPkc0QV6is;7aryc-pV=K9pAE#pUQ(ABwKX z{Q>Fnby)j(NXWs0`+&d6_POSJ_>pe3%?yxlQjp#$<@LOF=cWu$??*1t_FVsT#+^|DlD?DLzesL-tY30R+Y7Wd2^hR7%63XVr%032*O}9 zVrF7;^kM6#=4oqsx?9WWn_|H!-&1Q-%$}x{X$h?v-p)0srSQq2kv=B%5AHO(SpTyJ zevOUf8@bPx1#H#067~g`cs58WGx)8^?KQFOHUGpi+?0QV?SUK59&O5?7r?sXtN<3n zStO;rn%kP3--1IvpnHmiJIyXzX|wd!<_I93`~Or-&ZiHXwD3%b zft`kpcXwhJEVoHluMqa72OH+t00gEF@b_TTOhJ)~jZ|5Tn;XK$j&a|1F!e5#I`%#p zo&&k=uHm;BpS^Rg?`9ETG@G5h$cC?Ojcq>8__2d?&SPD}0p65N0my2$&4EZ&l1Kk%sN(W1j)$GFEL&kKZQ#ZTs3kB~Q_J&|Jm zzeObnX$(59_`LbpEsPn(Pol^>wiRW+)eYGHfBboG8|!{sY<+42^Xzk7cG{3W>*>4+<;MK;#|d9E;i20Pmq|+ENC64%8f`M&Jeh#y+}mu zF;&W~AKM0(jjRAd;?$Z+N3lh6dfRRhGL$0o7HD8>fN&9Pq?%p0O!m2*lRv?KoYMB_ z6e?EBGPqxkWzRyLUW`4~GYxT_i6wehrNU9l=)(lUXBMjVNE4m-s6zdTSa*lEXz6(g zL&-Og(+}o~{={6FfVZ;R8S-{P*a!76A2?^$jAKK)3{G8(r>(lq&{fvdeOY`!I%^GQ zQA_eT-Ez({UWo0;`M{oc1{b%zy@uL4cE)xTc|2<6WYEVm> zhp0*4h)ESTU3<~jh_RyvgP;3eWd#1rc84Noex6rqYeS98mVY34cYReohJNi`6+KvCj?jnxHI1 z9;DvN=D28A{^wb5hX*|v_w5MEfb+PKO+0f(y|I0Q$FGnC-RQ z7C&wV2L0~fqWe?3vY$El-}60?lgJ(rR+nW0?;w9BXzNjv7TDb0b-)BT%UHT1h9DTI z(nTDzJ1Q=EL~ML=?PtK2*rd?EyQ9>W@o*5@UX%KXN<6Bs4WNOb|F0S860&GaR}#b& z%Y0X8YI{8CIH2prDS--8Bu5_qN#}HxGGS@bFtbgI%eHGlNEiU;uC53#IdQ@_pbTD7vtQBV4YPnw#h>F_svC5($|L@+Rl zUs(`<{Ob@|Vr#?o$0?+RsQKCINB*ZNtEfCtI>r=2;p7b+%+mbwRGQDVQ(T9N!vN^x z1}{7wqq#NT8e_alkI)0A0qQ9Qbk%M1aCuJ5d3)_d;ge>HZUj%7R%JFB8H*S!vYyRC z1Gch%!(s-TpwVi77BRU&U$?lbb)E_sUeIo1r5pOo|nd+5uE0vNT-5d$AleQ~}d z&@()T!&e!?zt^P)P+7m{&1C6)%JiFNM-zOh)laZFmu|$xdBVJHBV`E*g^Psobftv( zqcki#-2XZ!J>aGZ?VD`pa+WD;S=mql6Vlbx34BlS{x6rG&csv@99NN+u&R}-!8?Fc zjfE?g5yVugav{g&j*N*O5$m5e-l(-^HmP(I-xDJX$HTzMr{^g&stZa{e7=1&%QQf7 z3|~!tS=r}*&H1fUfGbT60TgkH|K4n^gd`ddsR(9>I;VUy%f?pjv<7JNMop9fowZoy z+*~YjMxIvNHb2(wwM&(9d#$s+*i~VSFlmjCIkfDui2Vow4zFE1yf;4Z3PS| zXhJC#8QZ|grF;_cV6c~#@QI{ez>6cRyk}9Ak518D;zn;kdi*?Ki~k{t4K7DC(;U8@ zu+_f-+Z#k}Lq)BF&!PBDRC|E#3SPN;uY7ze)uID2I^#Q22X)@@`g?;(esK~;Ar)vm zsfiNoQ3>{^m=+wtFHRSqz`KDhz#+?`hv$6KH4YZndoy7H!0>Rr4^lNFN%NCect~xF#6oaHsKyl;!Hf*dXn|@S1Q;r#n2r*Y=VX2e*MDqfSkD1?4@lf z{#on|ocX+L6AX<~LvwQtP!w7Z0{}fs#TgEe+`57f5gsY3>*^1ze#b+ZL2#YB@rc%U z^yX*In@%ngkN!uvTnyB;tVHeAls@pGz~-77Z!!bPP$sOHVQo(^*YA*O?|200TnnFh zX7!teDFaJ`wC{>QS&PAOi0Cw6*g#UBytvPibk@b0D{yQGZHu)ZQaQ#$h z&a-CMjp4B6Fq_CF`U8ZqWJY6Mna;_1Jbqrw*xp@VrG7&r2acnRSoT=9`FFzLZs&?B zDGqUgF_R-pnF7R2J*ySZSbH6CaCNjCrMiS&Oh1yScWaUDMdJr(hg;AM22cs#FTyFF z&EY3!@gLl<7tw@4yGP0E9?LfQHVq!b=g*w>%(f`O8C0Ar%GqK`vf;7;{E`5a93D_L zIez$nyB}Irz=9kxYgA|}%dMUI+XNak5`YwH6|YRv5}^n#tR29OW+CfjT!Nl+p*3>LJ|e zqdPX=)E!q<*z27`irti+JfC$ASBeQu1-y~>nEFNX?Y1cqt>4rL#2(9U{y~#oBp{P5 zt%dyYYYPRyx29DDBt?Ii8~Za#)GqxG(`?c5n0;MAe}>rNUytk6hxDz)-5pN}#QXgC z2CQ0`Tit1JSIw$fQ^ zA^->WUx_(i{r)8VOX4Y@5e;S~m#7~~qg&6Wfj*je8d!|1P7mQ1qUyjb64)>xE}tkhc8iRUsFs&E9y;4sC<{SO4F%Sh3ner@u?@brILXfZ zFmTDO3TMVvmEfM=GP#488$Oe6i$0&(yxR8iNx2I?jF zH3br1yGOo^j?}jRWD`#yt_PM3Wc(AXh=4nx!Qr+0ry1M*%p< zM?C*9HS|}BwSd8{$wXUr@c6X}Oc1mEFt@>VhbFEgfB`}#T`S4k0ZkZKmdW`FwH~Hq zvBeEd^s2^HBNgz&c$bemqW-W=mkbSfpmGW#kP=ow=`8fN7byXjI* z_{F@iiscVJ1H1Bb*&4eBzu>X6+2eo4d~q z8sNQqL&-50gJTk<&k+ESFAFO}0N^ee?>k0iAM*IslG;+v@~>UDTqYsyeL$I#1W4@r zXa?TYXS1$WsjPBTklsvvL$aiX#dpRFSFa`X0JPtB3;G`WlY={Y#%n>JBW!WWSN3oA zhY@}&ceB^0tlC3F3ZrM+q?i0oQ>l=!++1zQkLJX;TKFHaMxB~Q3TuEOoa1msaP`6n z7(8mXhL7}-GTWE*M6j95KcXC4|odA=Oh-%Rs>bgi7$fPNVs^+DH$9MOq@2 zsAp}r0ILtGVP=%89HH5}ZoxX<=^GY3hH&m9iXbB$d@t2Q*^}537C4_{AwymGWirry zsQ*t8sT;v?pTuzpd5ht}xBt*A9EZBWZtQm?$>ea)qCP}?&*WBwT>7RC9w3G8NyBL2 zGX@{mI?*LWdfyQklIwvx@--@fzUAOE$-pIrxqPrw38^tUUMVkznr-ErD5{^o3g*mE zKW-2Uiq-c=VBihgjY6Z6K4L6ooUfkJ#!8WUAd11I5htT}dZTlvIe%gu~r>KKkgqDS*jU8ow%v zd(TAW_~RAI@uJ3z<7Sl#o>cTwf+7Bl`e}eOQ09)5vZ@(I-}KlT z=6sGGj`CNAKWw-^N)rwo^?t!5@$#6S1;|Vh%X;d`Y`y#y;W<6+T(3IiI=5nnkB=b` zgm)Q(W(Y)zE#2nexrDWWyofD_1OUsz8 zk=H)z#X|x@UR08xXEzDbcRTKYTM<`JGkq@5`-Uo95}2A+^CKzb+DE;({V-CH%ByWG zdQGM{ZiLGbpPU%&nz5_i_<=@I;`$GwY5IUwO!C#PY-1D&!ZVv7anL;zb5 z#ah;htgxXAiMfBx!b0yy)En|4<4Rdj4;BZ0E5P;N3w4XL+ZbIHhsjPtJzx)(07=cx za2+wM?phZbKxFqlQU86fnkkiA7z39H^Y{k<*FNgOBoWG>eF^Y{JqJm-Ui1oyxqF%* zQo|?kJ?U4+dX-?}c*Y6)V~7D(sIXL$vU-EYb;isb7mh(qFjd;qc(d`2xt_-t#b2f5 zk8A7w=EAA|d(yPR34**b%{--}5vb$unVouM))4Y{hMiL58y@O-$1+S>AV&~;Tabvg zTW~7>qfOG&9K7eKs5L97MP-W(t=Rm%&o9oy}G=+-;A6PZc(bi5_Z z&rW`kHG&vZ#_Wno^=knD-OR$vuxSH-xQwq>*Hd1^Y@5d;mrG*zzNB0k3rH^au?(g_ zeJ07u8IEew$I{r8tZ4T)e8vqORfG{(X|eYO;;x0rxv7ljH#QICb9WF@!( zqoy>461FA0=vYXqUJ+piZ`l6n2XB3Hxq(c;>3PLn%5G+DtgmafP2|&;8+iCE;ln$Y zRFcjjG7!2=G9^gAEev|tnO{Ma{S z^8uV5q#zVXe}oOj@C6+E;|Zt9ZK;R*{|vGEC78t*;rAI|v9Fmtj&%#W#jAg0SsyCy zF}3^+NH4YiMB*e5->&XfC%c47pE#y|!2eDg<-Ws#$3(dTu-8SzI32%}A4kg>8g3NL z4+ToNAFmLtUK?Qp@7N~#pEPa1F3 z;u(!<%^%ui9t#DZk?@`Xc0h^0ye82Kv;@FrPQ~fTq`0KjcSkdr~Y*v z%Tn&V7O0Z~LtT1gR)^BIzer^DI%76(e5hMyETt!BuXffHyC{q>t|)9=XLc1cAqX&a zu(2lWRq~k4cBxP|;PQp0MJ7ZwXwbO?yoIZA@q|KdX(%YaNEHBU4sto`V?4g|NcF2q zvo8hTPj>owETuf94VwDH>=DO4x!@)cO!xdRJ_Zt)h3(`|Wx@sIFGi1ENIcdvmCS^c zrIqj_IKsz$DPh+~6{-nnuD`n~6V6AIAER1&vR3m2c`1B8lzL5s1-xw=?}ukTDV_p59Bu!%>-4_6H4Oze%&@IjPtu#`k3AH~m9R%T zZ_+=`W}y?vnR~@H{BN@FK=xa9`^9tgw(m5>Phd_5`&DBtduVaT=MJp%pnEr_cS z^ayMdD))#%{9y~;%#{BX)QM}L=kzl$a5NIBd96;i`jO*G$54a@c*{v$GgmfP*|_)I z;IC*3g$4I$Ywo5jyi90Sx}ubf5vu;}0I~|p=kc%0C9>uJQ?8T&QqX-Y18M}GCPmpg z#6SX7VU;O{&H$PthRmrIVZgwlNQ`E8-DImD!>;rL4*a7X^k3$`o|O@zHi5&Civgnj z^G*o`=mq)wce!;hoB%V`Nj}ilfy|N=`iCQ25MI&DnoV^r14ZNZj^PsO%f(;&l=(Id zD)9#zYMCvlP{_y94FY_Q_y%{<4AQxj7=-oCtQd-(D`Q2?Yj|ne2F!sn!EzRj=F#yM zt1rk-@nbqw2n?=thp0uk>dOH;f?1ypbei=PBG|mTSLpi@#SjbibB8`4eb>vjE|-AS zs^m}Hd*c|%teKl#UD5w0E=ZhsrumKDG=xGZcj~=x_2i>VxZpBQ6$x=cCu(e2N8bDu zS<07Tb^zfona43GqYB<&6aWWO3ewCI@iHSY zT?wr)H`8ph`<2#eKf=Ff1a0a!?KTyV8m5MZGWyu5U7JgA!so2nx%o+wK-f%cy+P%P z;z|<~rz`#KgolrkN%Wc99294boy~T1B;Rgt!od^+S~X~H6Y4?=#UjuI6iT7c=djeo zZC$l!YV8-K0uIrkBKOnn2+H`=r5W3V|8}W05A*F30XxYL1+dZ+?PO>@P7%XUpD4v0 z>!WTw4Tf_f;R~M7jVX5F5wZ_va0*4x;>RP{0#pOrl@&J>6w(E}02knrJG%vkSRlM? zNiG|5IBz~50ujbx=)msm(fqEzOQ8O^xg%0v`%GXUxD{fv$)bU{OQ5-Fsrk}bFBhP< zZR@(CJ6|={i*|{zB{_Lt$JzVw+;(!wf_|Y(px#ZZ@};xhEPzq*zmm`QU{LI{NM7W> z8<|a?bt~lg>-U})U4{#rdo9}fK@aw&0jI77)LtvX`sceh^8H3qMDh^3&tALtYyxuH z`1yZCn;+>iix$~S5WBx~|Gsl7i+-8}3z5gNF_{Y;E@daUc3+ko=hrik5!)5nA2no^ zX+5m7wCvKwdoK-U*OSroD0)@9$<_@q(5P?Qui5#L$gOAR9qJ%_-TG~}D9uk;ic(^Q z!9^4e<1!Y=)v&qo|9M7dZKT6-m{hZf4O8BmMk_o-x7$ zTH?F`f7-2n$&zc@XF~GxE?d$VhkxO)yEI-KMDPofARRxKw}$*Zc8^g`jr?ew2X^$H zxjHXbt?MB5r2fC}?rc8_YC0_?NzZfilYk6_L_ag2}LE+yj@w*My z`856rWI%zn9d!NZHSZg8n&k2rDv5ll>^e39O`5%5JjxRfjD52apFp=U4^{SS>{V@x&XCG0iS z*L(4;!2^csD{7)X(vHliVO#8B2VW^##zs=_Sc9|3%>K_#j|3pST)O2R!?BbbI2qFn z>fs3F4%ums>Jx(&9d|lI=t5cb1H%!i>AzmQ?`Cl-vg>zpwAyK;pf^<&2oWAj4{&Eo zxkL*iomqOuA}*3Qa|u*|RWMtb9at}ov8uOtjr7B14W`cBUOD5FJ7LQlo;lfB?J$zC zVl}A;lH|48*AF;t_ke4KrL-oQ0##CYY$kw`2}8A5EmOj*#u}l)FE~5P@jC_%E zETXl78~3icwL5zU9vt4O7wI@#gYFqDAt>h7o+_S#TShD;17|S>jo3Wl?%$n$P(KDY zy*5;gi|;Pq1a)ybNu90(#GSKnKQ7t;xZ5$RWg|uRB^K+$vtBk<2)2AI>Z#{xbMRzIwSgqm|)df0o%pJc8q& zuTJjBkTBfs{h2c20i1Jvs63IOWCm(n$Km&>i~~V0TxCF-;1tZn1Qo_5SSo2ul*^N~wLrB(_K=;MUr` z9n||z0~vo}JZ@zjBK_Z;E{_&)&08GgFCXx)gW6BGl3LHaApV}L4;O2MLv_caoSp2TiJe$e7Z_A_|PFvXpGCq;}!9T`@QI@Cga2y$|nbYk}Y;iCx%u+2#j&0R#p@|L2?(J`F0r#e@z79|02O#R;nbbPa zpE7U`uHL{o1;#z1WV+ca;@vFb`=;lP>Z0F*9 zH3$S!3WHBa9;MdQ({jdey>T+|RQ>-FOP3^G&gTvUz9T}!TSR_2Sdp{DwK&g;)?Jr4 zz(6vI5vDV=@h*zPYLc#&jin<^bEypke;Q^#XJOa#kgc&#$M4eF+Pg)@;)-Gr2o4^e z#zRC-O}(934*HUE-ZqKCGXyL+5jYx7OmM^dNn#WU#s&+m%-eXDHeI2QGpu=}e1Vz- z%!Vf|OTU_04Em4~{vaV8I5{X*&7Q{FnrLPe$0xYr{lpB_YMiWewnI`E(1H9-i4SUB zk>dpg&F2wSo$?^H67(Zgyb)Z(O~FaPlM?@y;CO#YtRmq!kapt}7=O*n0l7##9n5Fc z`4vV93LqetpB#bN{CyumDS#bdM7aY&wWAuW*`R&So2FkdlN?MfFlz51Ck8fy|8r}> zR8WPk@-}V#!W%)%|013+8p^?nj3u)#s~*gsnj;SM#(m$--X z{8_C$2Q=2hQ7vCkfpB>zZ)+F%e;^QGV^y^jS4mG^RmSBMBbA(;v_JrW816*5GLM)A zuiQ9xVDDJM!`d;F;`SITSgWO7sHVLMuoSQoD5Yk3YZ+ga;fhKTCRYV4MF4;pI`CqO zv+eAZ;Fn|A}X~Cj(}@Niel#WHqqndxI|nczyaEz-qTbKgclA%hdMF zoeA#SmqQIyTOb2T9jEhEi1mG9gZ&v|O5+WbwPchi*LAT@CsS4r z?l}5YJkhJf%KC$h-bSi>$WD&{oBzly^0tUXujS+A1k_tkgovdfHHEc%DnR3RQSBo_ zHH~8PmWf|m909=?`2EnAbQ<fwVnRLB!-AlIwl#exOtiqWf^~X|QyeZM($>NC7EA z)&j%i{l2~4L5ntZ>!d1>--q^Z=(eVn@Wbb$0{mtqb+3a=&;b@TZLeJ7(3SYLWmbJk zA|0?VFy8W3K5!C6_5epBvX8p9sS`ioRwU!i&zaU!(jlrF1)Xp^fwg)g*!&p+%HF|9 zSl;2~`L!KixA;Oit3$ah71s4+5)=x#Qm14>ST_RN0it=rq50F)ADd$Ec0b2^Ok>*g z6ch!CJkI1PsaxSD&>~@%xq<)WoX>aMvELZEqdVdW14r(}$i2O1;HRwGpfdu?k_2SX z#(SGe?W8z>hFY!ry&{hr!71qw((MEim@0_b_jOZ`!fP zTr=Zw4wZp5pB$)xuP&rubI{tJ{ABAPoNWsNI-R7F^U3Zfk>i=iZ6xxw21tN_Qjdm* zYe0rFhY_UQnthddqA;`}0WnM#kWYp3A@_Vlow;4=eMmoqbY^yraukX;8RxJ55JTyp zoW2}Ho+)ROC>U)>Knxwe6_oobkjBhL^H)`Jg-elYu9C3|0s#u|(wgaNkk-sr5w)GH>zTC&>tPa!( zxN_klAn7rvum_=ahNA(V&@&jL^q!bgz?bUwIKUNnJIo252cbcv!0Hd*+9#;#@KzVi zJg`3w2zVm~OEadBllL(;2w89t@LCL( zW=swzk1;j~DP|D*-!@k}Zjzi+jM>l02btE567?>;U@c^FLBOjqSOsIUIe8Bwz?OJJ z0nB5tG-FCQc|Q}woPRtwq2(+QH%>RB!AWohz=Gur5!?K$Z9H5lAVLdSG;Tj#EC045 z4HhzJ?6SiCS%8J+ut?k(U1f{(r@$NriLFOF)I(k!x}U}4#%Yfu3(<~DxSzpeoAGWM zAcqUk&}5{zNPjZSX5iR*cz}GQ3N2x=xC3-ONOokv5(bNHL~P#!1*U$vAdpwF zzq0j$G4-5uv;zP&UqK+Vu`5<#Oa;TgUQZew-SSPRzFU=Zb z|5aAUm^w~9!gOOId;lA800+YZH3C5(FJl+17mTUl{6`pT7%A<&-JcgLc(Zy!@XTlV zSHgF7K3-FIQ2z#q9tBZjSU)5*Hx|O?ON0CD=o|FH@fCFuS4c(()+-7Tir;app>JR2 zNZlS+#+6iU9d4#du#ggK($YG}&l^5!Nma3jRDq{K4P~u0ar1usbo9F$Elj3+B>AIG>GjwJp~ypo>7R0ObjFqN!`m z5rYL!h)0o9&GsCmaSSibn%ifQ-#2+Hl$a9@uPrKklBL@>URnO^Q9H&+qiop-f0o#6emlUniCAKEGiQ+#;w8j98lhSz=EQ-^hIj-=}ux|TJGh7 zjWm$#qx$o<;(JbobKAN7r%ojj=f)a5Xz$w0*)7ySB?lA8MmA{sTK(MaSDgm6wc!%T zMmCb8|B!sX2YddTD6LHe%gqPJpV%Z-Clg(OabZri!}naNBLfWN1$BYn!398x=#h*P zX~a+8w~MXSPH|Kl59OvL->dZ@>vNC*E45#NxOBGfI|4?za~9CrU2Z-&UB%?e?iqGV zSET~kVZOCj;0)YiyP)nugt62JG+Tf#gle6~h)1|aZahQJlO?jipqzPnW9pn%QyZi=26Tp8?=^G2Fw8Xw6vI&0R= zuhq3gKio2Z%d{smFLLWlLyoZE`u6=2ZP_nMqq)AJpZg2$$|5E%TC{4AJ>SFbIb^Vl zx=Mo-Tmh~*PltZ9o|2rhx+vhYroc2YQHa4(u!KbeJ}WCQO`Nt8E-4I_Ow=m^(^^@K z>yqR+rL>SVE?Fl51>we!K=J|xhKPZG)1>QC`2}R))Y>!94xeyAkX-t}QF{{BtXYF^ z+!eY7jZ3s@<9?rb!Hxw$>mst&^Vluj1x%X#?R)KczH|`w-fdy2=(63`bieC=TUZvm zdCNZ|86ch;T9dDcF4>Tpwy#N<`nDWS-~Z5&zqH&azYeRNA~)%#L0J%uSMPqt7e zr=0jD9C6=C3~FZ#Yo>|p35+)ouo*g?%9=IP6GMCvJKn4o@>1S{cWZ1ioU4y3y zNFz7`ozS@yPqauhR16z*J~z3V8_v~nYxqk93ot?cAj}{^d`60AsBZ0qliSFjW@gqp zfT*!tCl(h=M8A>^6kcZd{CB0;odOFg(bSVQultSdYwjYK{}}T6LrKbP@#<6JGJ&xx zCdC?O4AWvla~aYNntXkQjFyyHEA>f*>j9R4yvcdC@VX?-Ey@ZBY(*_!WjaXUl*+dF zN0%_Q>^7LM*l*TECO_v8S(QnZa2?#3^aI%|2)754sZ%v7B$)Pm_PQ#|Ho&a9q<;H7 z_;yl_ivj+7c1rm+8>;D>z_l&UbM~?if+nL4i;ysvO&g+7oh3R!!k>@b^dE&$mgOf3 zp{vooqAroa%RjFS)7whqJ{>5)Kfek7F3fCL&<)+F8&`PncYfpsrQ5)DT=4?@ouB&v zklNZNic*b{6{D7u`zo^YPY{Rz7}SHGKCM zd`tW~gFI;^oDbI~Jt6^Vui>%hnXR@2un0KWuw-sC^dwzELmx*1(jX4PAlx0PGl!Od zYf~?P0>Et8E-MD#4q3ZxCNexc9 zoYTcyaM4QuO;s)F5$T0A3$h_4Uf=@VgX~hduq51XMPr|F!3Ah?ZJ^|u^nkve1yRtG#L&kv>6X6Y)HBeS z2(ahF>4HAxf^cXAu#uOfhxeHlKu~@N6kM9_ghp>j06AfN5}$+8>$bL^w7pFO+QPKx zn-QoM=(T1y78K}pX15do_06z3X60aMi^pwnkTFmuaqLB zXf)shoit4tI}rwaThpd|MBjlUJ|+HgU@G zi06=x{t&tpNY|N&DWM9Cj0NIiuml~p{|JSiC7M zW7QF?3?M5=`)Y!?t?`s!;Zgg=`rB6n!j%Yt@8JI2N|=D6ZBTm8rP*JEZr`G^v+x&X zok3By9e%8AGsu-2@Sg#n?>NyS3ojc{4HnL=ySAm#_Bf>7*X-9kuI3+ zIiegblNB`AM}YjE0|AyZEDODSDPM+N0$T~FwO6xJf%Y8SIn4AfL>Sl99Zg#r5~R*} z)}kSF{Bl%ndRhRrp8B2b7lKxUQ4ivbBg#N^C-~n?E!zpcrV;xK{b-Qo3=5q^`)9m=n*;2b)9*A+ zo2Agxj#K3DM{qYNlW1c@6(eqqPTn3|LlCo_ zD$g{TB}

U?GtA<=#zc0@wb}ilSg7*Z0%GAE1AloO$-QIRXJ*+#0`WGXP4#Y-`yd&YOKvc8cTB zk#^*YKfW)}9da65M>)D?w06O8 zpx|MCI5rRu%c%AK!{cxJ=i#OfUKo5rP5J%bGBOR?UHV_-m&FqpOlL}otLsCTee#-K zqS1>$Yi6|m;$S(}ak)&(hm;23dgI%SxnXfoW^`vtL(0nYZwECdIp`KIj{f9oZF*v_ z(&YnCx$N6*oGH>hbbP;!)9aVh^S)0kdhef`B_pJ{FR zr+N)Dm}w5Wy4C&!wuNkQM2w18-R!XV9=0AT>|>{|N}trbp&ht$D}loDqL{}F2cfG= z%iaI5eJsT8bEW@TW?Gyh!INUfUTeM=@VsajRO05QO(UY(yA7sN6Y6FFdaUZCi1QEmC}y2CFAOT=G%@hZoxIwDDDq(e2=WI83s1)3Zc}N^iNp zHUQZ3v~}f7Y^VaizSbSnW)KnWLyOY;Z}TGhyq&jt42~)eZ>J3Xl+t;2$2@@op;|=H z%K6YYLnYeDz_HAK{DuTsZK>)Xo&yuBt>u3?8BP4+P(SG=jiUrK0n?vQ#>fEr!vaWB z6E;B;oB}ufkZEZ1qVU5eVfB83fMOq9Fjw|?-ICdbgwq5d?+@0`1#1D>=p6amjc58+ zqSew&D)GTU11wWLT*GhbUzgzhdfmu%{r%db0YFFs*?9jpF1c14uUY)=@wQ-zVnm45 zb4dx+y9B-!@U{ps#oG!fQpuy2w4@#IxoqISglKjac? zHS3xey_-(J{FCleIGOaHi7PFz1t7Fe+~7y{0j^oJ@PJP<><_#7@Q{V7hPxi;CAmXPbCp+Cru|J{^^Z#Y;wjy7ZxG`R_Ag&aU#X?sMPM+B-ozIjlz9VY|Ko0 z9P8OBwY}{+mQObDh_HXVE>p+2((M^bXAjw6kroN1vY8O4KA%(y|+++C4l_Bhe5>TyMHt;rlc_BM_K*UhO%N_oNX9WVo z2Pk`{Wu$2sq+a<&*dI*-e1muXc_G<-4Bl%cXeFlif$ zl$m4G5193D`RSeRTXyv30W)U;e+Zih#DWHb>T4OxPV9(C2-d7>P92JSTP zQ1Z9`l*n|NE%0Z5scDLOMp!hPqw4BD$y74JngOh> zj~n|~tJ#NoRTt~ARh@yJk}XYb_fVxrnB3J4yOE`b3N6MHsuQN4C1t_l(eTNzAK_R; zf5cQg)TzV?3iHos`MbapSC<+}=}jeyoDC_< zb{eyHs6vn*!tJR4P7N2A&>-~&48A+6fXJdaRYUROJT#*(w|-h|!>mo)Keg8-eV$bM zCAZ627u~IC7tdTK`EV_Ek!0pRKCb3trqlvxd=)eWEeH#K8C>-EEb@|)nHBhTwQi_3 zooJ(d(2tr;TbukCjSPAI03LL4SayXBw{kxCJ)C8Ia>}-q`atmCOwPOM$Xs~k4lByC zl=$+L>>S6NG@24Lqmlwq{o>*sAtd4y(zpPkRFCyg5694Tfk}wpIF$HH*2I^{j#*%J zx-Oq+PNlUnAxraNb-vLx^HC`p&a@+aQI_bNx^>2OJ08e9*}KveJE_;brpwOALb2CU z+yhcqqJ;ha)cA*8X$O`A(^CZu^fdzf!oOyHyYDi$=*9>9oyqvV2Ac7ef7O3;irwx+ zt?>f63Hpe>X?V1tVs%w9<;g|b{JI_aXKA*%FWGkkEMEvn!nm=BP75F9%X4nU`$XW^ zf=(#CRK%otcmJI4pzGO;>w5r9vuc&VPj7VjPZpyQ70HweYGP!rTxirQ{Y-!U0^+7Q#t+Wv)Nz(R4z@nM67)#`33 z8BA(}W!38bRZ$yN9LMr(VDN+wfGZAC8@ zNZ*JG76xDaC2W%G%s)1lz9IEuzgS8dLT$r0;e>U^mGa)c=nppJLv1nYxH6%L_tsut zs?37p$`fn@jQ7QPb`5WB=TTaz6IbRf;w_Z;gKaRlD!~h%`cWSN=c?E;g4sRW^+1tV zl9SExUKVbE?Rt3E8vUQPb9zNG0>6hO(6s&T`f~o6b?S0&pLiQP=rbQtng`!~1JI{? zg);Ny!gKKt=`7r^Cl+E*)wAZNHNW$U%5J6V?y5JcUC3jz<>$~es)lxp=J565H>JdB z<0>-PYQ4My7l|k5#yddf2(+gPX?cU5pU?)h_Rv3TwqZ2xd4np^8WI1p3(&U`^<}M= z_k$e0r`!U0!wZGzheF^pE7-ajn7oD@U{pj^%|m2)c?;W%NX%eRLA)3;1#`Au8wNY~Us$DI2IG z#j9b7otavRI~~%509dbP1!V+jnEL{x1_7?-LKJR^3iu8sg8(Q^z0AB}OS?M&Y6St% zlZp-Ux24VP4oN@&$WpMNbGk(Cv_U^KAO!~T_0_sVp}xd0%o#ypeR%=CkU|8wrB?@u zG7<=dzJVdF>1%M)AaMxhlZirXk;-AxmEaWm_m{}yGb(Ft>gHTLktqfKT*JRU<9*}A zL8mSqGP#_<2?2O#aUEz!W%&9g+GOG*Fk9RVBUit$RwS@0`s(SNuZSG8ytZ)uU+1N{_SDIrHBp`m43ZC|2X^9o1ZFogMkNq`Xd~|_|=o4&XS!J7yi5O&o&{DE&1sRi3|{* z)$N?8g=%CiLv*BH#H31_zN7eS#MD`Xq0coUKGo5Z2NTKOar~`PEh9UbZr6If%=R50 z2R%0z|1QUBu#=H7L-+aPUvHLtyq&tvYGs`M4XCdqbY!=Lg z?a<1$0ylR`P(Chw5l!pRDTPJ=8tR$Ud1m&PB_QHK;&vorYkJswwEc);fNiuQSboQ4 z(UL#w-rETtUF=LR)!tYzU*Fg)T^)TgY2MN?ecykr*z}_4oiz%fvyR;R3$ivY!yNwD zDTKd#9sQAJg}&-LbEE8x-6FKGx`^S;ZyY1oKon6J+k`sGMZ@gei` zrd4j>1zPJ87DFi;C?m6V61kw$!i(&{aCYLD%#t?0{LRt)!!!iX)J##dH7nQGv1Hsu9hJtcQx5R|F{M?>si zg97UDr@tu9+)m4zxeK`75_z2T zrJMN_-1Uk~z@4rvVqUpEQHDP@-%0VRNRgZIahuc?Ju5BwGIpp|M`Xa=>Pl!`4N zif=Dvl=-4TlR|37W@v`yrREzNL{Gz#%T4VfyVzfc1)-D?tq~~Sb{LSlqKlc|2Fo-1 zfonZRX&cGaZ>Rzf;s*ublCg2?o?ol8`o)2d6!$VVxhLaapQ~gWW`#`n?RtP^{AAQf zXUP$n)t$ettaEa*iAf=@nG?^4qIc0nyW4aIPa3N747UL-$R$3OJ#I6SbbYN(NZ zc#t90ekdD5DnB1wj=ddMS9qS0tI(lQnBEQP^vg%m~A_0x) zF=#pqcRetqV1Rw;B_w?euo%5*BmCIL*OVw?qtSisAO>L;31SsrcfZ>bmNm}OLIj796K5A zBAlwSB_HYk3&QHVaf=_}_sD=>LyBWTXxfU8Oy48m^=MH-Fp&P0{=@J5&*ot2#j8+I z^gx$TlX9=I82C&wQ;;0(%^pQm1l*DUvvZAz9Aoz!ew8-L4#iibj__hhQ24{oo`OQ%rSpuF?8gTID z@l9s4cEGqfcbCzs9x!i$Cg%wW#6146Q!bxKFbngnw|5IlZ@u8n>ww`MTFWD*7`8@k zM3Mef5g2e_TDTn1L?Z&|B1=F6?%}sFLi6fL?FZ1eI`jW2FJvpw$w`38Cei*s^~Jm5$<3I0{Fh zh3=b5Tf+$VO`$JmEMo<|eT?Be+{gP#n)Bvq&Qo!9h`xTXQSc?JZ@k4Lw+5N5s zxisCZ{s#lcXPxT@2;HLw>&N_^u4FJM`^wL5+{fJ`13ue4j<+pPhGz;e-uE!AlOb8s z=%^)q!zN7ywe6W-BTz>*ZhG#<;DZMsCz^3}@Nva?$T?XF$frktu`8T>3S)4+h zq>Gx(-9OXHVDtFw{rp%-pm7JH8X(}E>4nL;Emwwq01%8uKZ6m|?k zun3^$T=tDX;2yCr$DFgY2!QGg$`|^fh%|3-8C`VYPV9oDCokm#O!vHLMuByR`zsPv zlM?na7Uz(}r*6mOL&BKiI5(R0an`Hh0e4XocwX{IxKR;*I-}M&EBf%3rY5iEhZ7li z3?9iGQWEYk7aqy5MT1IOL{pA`x6_t0TBh#3HjT#FW|=~OuWDHhp(HRAToHw}C38RdkM zMgZNMcw@y+#(HkhRtioay3wi{u*epi88?DDmqN_r%X}hmi!lp@wJdf6%E%C#{r_UZ zEam{+&j1%x>oeW*-^(#)L*Wf7fz0owzOJ`q%@Mz1nr@I_k9L*LM0+CT@Mb&KyPylk zK6l>=1SDipdUy(j5el2-`i?ke0AZ)?`f$SCj~chy>zM_ibP`X(NqVwuQBGV~7Q2Qu zp9^S&a0m)bP-xDn9<>U=6Cs64_98EW|h`S`I$m%Bj$OtoT+ke_Cx@)Pu@XVh@6+H@*W5T4egH0oxJnh zLdvP(|Gs#x{xPEBPf`#8@YfydNVR5xyQN3zLDL}hyspFMOh!mHR;?v5-3P8^l3)?A z2%rM@oQrGZcMAOz7X$)AM>Os+wNnGCP_>P*c%`rSgC9b<|3jk=R`N%v%)QL;KihTP zXS!ya#dB5aSm%)Oujhv?Yg`S{hvHh|L>I@uWlX)Q3H=#yv(ZMzma?HCPB|HtZ<^AU zdZho)5U*d7B47S6Q1$-^H?5}Z5tc|$sekEj>5cROKk?gL($weK`hR-eFx&EnSP>D} z>ta%zP9O{7Pz*FsL)K6p;Odzqs(z>EPWm#*)r32|8wB5zoz#R0e9u0wsTv4c$CVX< z?(*BQZkI*ff9_d!&1bdCMuGl3q zf(yk>=&Y`i@rldtz;HS;?;{mkI&JrxV3Pa3LaotOlzHzJm5Q{nYf7V%_^or(?Mx zA|1t}a1@S`35HNuAnsGi{@KXtS(FvO!Rer8grQI>3x}Xkzltn2IyBTmCDRIB5S^JHBn|f=G5chE6Oow# zW&1lSdal{!mbJYvrmJd@zei_U@XSi?s4!*9Ay^uueYX#QqSayaEVB>?gX1`?-Y6K- z%z6^x*W`x1bmBZBd+K%biQ|JveP!}(Y?UX?4J@+293-$2o!GpEW81#!W_tFGXNfZZ zR@glRTeOJdKpgxDGw6g8O7rKDuKSF-1gO#me&zRWXj8xK>noFQ(oT8e7{UkP0br@%f|Kf^;!;RA?*81wMfx)mXS}8G(bT@3-*8aaR&LBjBneiTYL}z;gMVyeS)dJj?*SAqrw*eVaukHD%J*+t z(vL176;gx0sw`fA#wu&F1p?q0<_3(3bV8UJ3e9_B$Ps;C;Fkk%g`Xj|vSz~uj<#=` z;>nblK;Ia!cRHgwveJEtp#6O;(9Mkil$UGgGMCY1 zH={tKGE`-BU;`fy)s`jQ9u>dEwHUAsaGwdz|gzx&r}H@~?^u=MF-J%rA= zZN#OpoZs_(peG2DDddN*&<-8i^c+ep`6-BgU{KtS|cxiRaJq~AP~ z)&C&H9$j4k0V1sd`!I+dvqIs1YZ5_I5v8O^!zLSDz(5qxf?nwU>QSBi16@r8s0W_E zqyUR9C5D5wLv>h#5)Z*4I0Vhm2kGcT=#`X4$8yEjz4jk&dl> zfm{S=c^A9;C$)~DgHnv5c<&aie(#T_!R%1Z7(jWOQG=1wGZg^Xk7mGk(_1H!L8|LZ zm>usRf@dMjPaeW=cxY92ppWDBUIQG`|Llh`_1Y}1RVd3G8PbcYuS*uro^Qp;U$u)U z1jMdM@2iTtLNNeZDAy3*Fy`!F-|1TpGJC-ZE+YIR`(>HQ4lHkpt~81+`9}Ij$Pt4= zLhn^yfl#T6(+G^!7gzc7<1;8(lqm-wxb0ff_cz7)Q70;)Vr=^%Qa2O%FW;AWGdTD( z{=?grlt!oHsR+eLq2l#)8Jz|CZc&a0M`1*v%`5~cVNbSEGAGSP$vw#z_wA>^|A&Oq zw`^tR@ekow1`6fk0Ki1B^De9dw;7Vqkl;K5DXv^?t07y3-f#06yHxeeFjsE$uGj^! zynioSAaDmk$-G2JPDtm^0OxXyWUvdjOag)j`~C<`wZjyk$`gntTAF`J`_#*KI(md^1EKy=**;_c)_W{jzU@-n>!BWpx98vQ2+`5ybJ z6GKVe7lKaCA(25xOW9iAIdIB!wCJY;)Wl$_aPE{tlUe!-vBsfej8~ZG}wWo54wBvT+jG|8bAdt zdw5W6BAH6|2iqu_k$YbtL4BYvkCOj*NxC;NGXfD|6RFH1tf5H9Mg85Sy11fAs0xof zf+f7&kmUr&Kd6v@4Cz%8IE@N1Kg(4 zdM+VIO`WXqsR$zEA7(tu`qg`swofR?|Lh3bBlpBvVadbCX167 zrxOM1rtDfd^RGmHM1FYSK)`SBAu@!Fb6f)Fxq9vBbAjGBbPk6Erl!^W*c`HJ<==M_ z`C$?Z00PD7?T6$$&V>ySZD#G4e%!Ae>*xYOOY8#@`#xl(z>0sg*Qa5@T^&-K%@Su@ zpc4UXK@@9=6%DaL7ZP(vg^)FB}_7N&UjRb2TSV&wM- zdZ5d2LZE6JaL>}#RSDejh=hhjFWaOPQ?B3|f?0eX?*OoCt9~Xe&z1(;1U7zH8;MHG%xt zC>5rH3~xVVxI^?D{8$J1hkbQGS?4<^*pQEBPviTP(^a))t3!x>BVLAD^$124w!T(` zLSF}2_f|*RUnMX=-rN=_OdC>udoQ6>J=$?291~q;x(b#o*7j(PvPCizOVN%cV7t_7 zL|vIe&whMkJaLr@l@lh9XvQ(CZ_a{R-1{q_Qswn9@;EyExi)3k0YT^DP^F;Hp%uT%_SyAFp`)uZZv` zFf%WyFoNg-tgqkdxD<*whB(z{aSX651hJ44n2Jr9RHXyyz}YkA)95nHCen%6=YJpi zElLa%nFwAfK0>CtaV4Ay8PT~BWuzpUg8rFV;`fQomZKrYTAKh^K&QVpC!w!$uzgX= zocZ@>hiG#~T=L6Fe3}5|iaX=_A7Xt@%KE0#b3Icw9Xhn{Vs_AjOtRgO9M9NuG9BeA zQ}pukD=Gd=*v7glQVC`PUXB4LCBC0HI`+q-TU{!c-7btHw-BQ8D{C*;B+-mNhG-L% ziRyMK0gV5_XPERU(_}o1I!VPSgH)Ib^dwzBvOTh_sEFh4Wa)C_c}@z>K83Vreb2OE z%6sPQ`?Hw;S4>Yf!%TU>#J}Doi5tgEd59%;Wl9pJF)1-(5?33gxKmEt=}q>-HKNot zn!!$1H17zYmstr~N1GMp@1#Ul7w;Y*SwbgGbWixB*m&Cj<%{#s+-~LSJsM2!BDO`Y z6n#Z&yRulp0O!$7Xk`b0sP-N2BX*a$L5QqM>=(6Dx9~Q8exXJ@AkzCC)hwV)Vypk6 zStS4e%TVLpBexMu>_P#~c|SlO7&}ie3E|pETLbe0Gs;jic%n7$?euED3H`=aXO# z!aw{HDer$FgrO$EFf$AFaiJrGRz9>*u*d>!I22=W3u}$lYdcOeJwqbr42pvj9tCql zmPE*cC^9L+KUx8QW{Puz5^dlNzxPaF>UY3CQ6qw{81>}e4`BO?Zs2{m8^aic@0abD zihAu)v?!oVD2|DNVs&rIens`xMp$=Y$(icevhwTNe5L5xY1`MFhp9A$jD^>n9RtTa zx~j>&F^;froyeE(>6l%MzAvi4IDz>TLRNO=V9c>oCY|T~RY1vz`L}Z3K9oxNMOP4| zjyEVs5c*<}xD> zyGbywb;c#olsMHqRvvb=ixjunUM*M&M2d9VB}S~gotI8BU@yVOO;b|LWlJWTT9>5j zm{nyFUZN^_Qd@rZO(SYZH~)?lgOydbU^&@r(e9!o+r^lIzl@8qFz|DaC76WM?y`}k z{Tn+d8FGhTq*v%tr3;;ko`f6B{t0P7YLowM0%lg3#|-+{VlV>zYZDC*8VoM#Z=x-b#muB?Z*>4vof zTSIuMG7c|M72$9>RnMuf8>E~LsFVK0;L4*IOg{)4%c)14M>TbeQ(dGDm|J-<=F%m? zn{w(e&iA@d#_5JqU7W7!tXC?*Tb0-2EvhHHEvJS#SL;FvM+T(^I0MyQW%AkG=-)e; zo!qgN4g9C%81O(6(j`>gAG%!-8QsoE16_Q&0-(L5E0#`1A>ltXmERp;f4JVhjg`p? z0Q@C_=o|%= zMty#)R3ouZVF6+JpI?TjyH~Dyi^6i3v{6uEK#jH7uLEVb)$Ece)N?30OyQ~9lxUtb2bI0 zonf+YfUa}W6tEUxrs>If?B0@yX2hB|fPNHg@bUeFzT%R&$5|p7UZN_N1kd*mTEiuC z!-)_E7kxVrZoak<0hfu%gmy>G#8mkTl-MIyCZP0GSUm4on5 zQLuggLh|NBpfaY6B;Cqc&LOqpn#v1t&1joXnAAj-xb?Tn2y%iPEYcwMRsMs0qk%|j zqPV&>O)Vs0jAc#A2H?ig4xcn)%Z#Jwk`$GZ;-5BRu{E^J&VsZAw^nw>t&&Txc{N>| zboZA?AVp;q8L4B>kf_tfyOLzEj3`~pd5XTcQZw7QZP!K_ULGtL{kGdoq$@#2kbzg> z!Lxa)Kf(Ia;w3>A>g%na2)QS=*6zFW;*9`N7E*2C|W?X%KMmy)# zv@u7MrEBt7W?|#(?{0eIPN}vc03Tll) z-}<|+So-ECA=zU1oaqJXOq2u*)@9KFj9@5P&ssYtbkJj4OaoLvsn`e&t*c+dq#%X4 z=M#SO-WzhaKAi)TKqyWS{8$Xj_=_qF+;g3Tv5o!8XzJUwKSo>siF9DH#F2301`DXF zWNV@isGHQLe>YCtK=YRz$$ZBgVTxHDy8JA{LX3^HGk~VSXiDIJuU7ZbEd1UxiyI;F z8K{HJTZuMJlE&}&U3x2h#LxWwHEo(AP5n9Vi4w2;-t{&Rnl2a(jsOw5xW%+2?+}mK zottS`@G}M6Ue%vsnB#z0>VU9uonD=Wg1qI)74u7aOTtlh_9i9a$@($Iu*i6aXnwp% z#?Zo)PT9Dud(e^p@VfOIK}o?JH)ZtqWYOaA#?w6oFh09q^+zgjnMl`;mhjY)d0-9$ zvIp&53_g)1Na9d=7Bt9Zf#Z|`I0;}0() zy3PWxlrJ)3lpcv3>yKP5&W~i~_)M?IR}bQ1I*=sN1sipNg>EB(C!E4wt%m*-ob&Lz zQvTxA>&*?q6hrWcV-W?&#eRFcrmIHORrFC+EwH${f7OD(tlOeb(64kSp5A&p35+w z6OD+h%XZ6qV7{nLJTkKRiBKd-J?@aOBRFFibe-##rE0fkN`m^PP05Gp1= z4GmLccn9R2+`(Z+CmL}lH_0<-A6@m~V5;OZ9}E`S;ywXam(%x82P@ue6W590hq|O@ zwhmijflge)2J~PpYSEBy$qPLH`>KLuSu(@8-)K(Ah6WMW*W>qJ^ZGMk_bpxa;66h> z^=SZA+rYQ{)_rDr;FeG|%JfJGJyIGQXYQ>`LotvC*i*6w|A_0~QN z?hWNH|3+?vuEj~~<%^66vM#eM&KIxx5Nup}OfU&$i1rF^L%18QSgJir*-R$D5>81} zr}$S_<++x?lIM9JN>qEBaZ}Wn(01~nejgjCT0zOUr2`qFWif{CvOdkB3m0 zpp{g+ntBV7j%vyMNe$nmdE;2yCX7}T zK?nQH+Cz?l`N5p((o)^B3clEP(HuXwmo>t8I_T%%4_ zJpF$*$tOD5bth<(09D$+PyF^> zX_~Zc{f*;?v@L(wph)Qc!#T)fcIUtrH-L11!eZp+PDH|MVe7g}7wAP%-g>1MhGQ%d zS^Wya8>LXjHlGKr{bbv-mVJ`tBOSPQeFlhs({%ZeC9CZw{k~TjFep`lD>8W4ew~S0 zA_+g9Rz4)!0%bwpph<4tnPQi1X3V3YEgS2TmpM^sn!=9Hx+ zpeGy!7e+0_gM@(Swt{SP6H0sy`xOp$O(?ThPBkq_^yJq~f+PP|0eM9NJ;q5GOn6ZW z)RYTeP4FXJPOIxPM=K5u#3WaPfT|qj`G`ZKvApv!K%EpDRydT4z;`h~Q!gGKIMf$Q zy{-h7$b`cHW1r!Eu(nP79N)t2w6;+^WGps;n_s;D^6ZPrPyYQEE!L?}kgq3|Y-SJDQ5;wo{eHZ?D_e$1Z=U|pwo@$`EAjNQGn&=t62}qde zKpQGsp(n=(W884pAxHu56I(tE10Yd{%(9Z;!$w7rKKPs@(L0)1`39DjVV z|Brow>iP+#^%l!EXwrAy9S88%=LKQrq=hfmW(_nF4e4w<(LI?l9x_6;z9{u-5A%x=VYo8a*mA&v!B zoT(@so))m(JrvZq&ZMx3hx8c~fW@S@x@|y+UeGPSZU=@8*WKooJ8PtnsR zlV<9wuI0t};-R9eH6_j1;|oS>FNJDZgo00(PUQfsI9pLVJmF%+&P6n?Gc5d=hxGl~ z9Q)6@Y3PTmoJYp=3M@F^Ky2+mW{$t&`dzGo=~&sZqF9Q=8E3C8MVdmXOBAm)C~f{)EbsILIpp>WGdtxnm0YuJhIX^>3=kFd8;=) z!@V0|6&7c0fE_Xr+uK^LnSc z-b9!xqciOUY{clf+`%sJSt4NtbLZa5iOjkGZZ8{L_!bjGVUs@L>3aYs zQTnXot<=)ub?3r2ecb*RnNLPg%R-idO8m#R>P@B$i+(~*&i2;{ITy88V2X1*w&e}P z4i--FV}1qiMrsX^sYwk*=(hgXvQy39v*pN`7liqD;#~JzspY(v16FGmEJ>JI((&2F zX8|JlJAWxVB_uN?Z2tEdGXc8b)oBuQkyYuG_luq7Rmjv@fT?5lZv9)_Qs;F?b}MnF zia~PEXxmXAx~{z})4EQ9zH3$_ZdRXiEE)b+x5O5L0Nmb!Xy2D?>#|#!A{62vHX)O7iEvF;DvjCrj_8 z&pka{&9L}FCLU>Jf}1em-Z6Wtgfw~0F;5cbnAm8hn%w9h@zlw^NY(Pq08`C!4Ec`T zmE#7!A-`$oknXHaF-^irKe}TO_m1`n8auoi>(VqAO&&}eW-)EIV%sP?dr(QZb16_C z#^81ekEUvj7syGd+3dgYl4*3N$x;AVeWkO!OVM>A2YNOWHTO-WIMY2?~d3C?eg7nHZ zuU=~`L3|a0f>LFoFW$z>D_6t;4^1z^V4zMk=@)=ltai{W(bSkN-nRre&s3R=-h757 z_D<0$o!n=~gooN;1RRV#Xp)aJ&Mf^)|C6^~BYe6*H|RI>WEb;OUILWRJJ$A5D79og zkkcJY=Mk#5v5mp8cge46Y8q8QT~}W{fFnQkV2DI#&%r7v?BxJJc^$Y&>pmV->3IX! zN-F-tma~g1N;zR1pdzlV3S7e~4zY#otO^CkXCXG_i<)B?zlS}oqKb1e9O%>e+ACJF zZ%WcD3Av^D+A8L=uS?P@WSocLVY%h~Gv_q3Iqb$`D@TYkS7l+zDU@8=g9g zD+adX0`v18<>2wAehmK`REyS5j#!aypZCM2Sxn%z&-7LBHJZ6K>@E_1PgN(vIn<&v z(=M`3e=WH~DI8_ON{{v}dG@S(z)gNkHKzE^et{m9UBE6#U54-u%bTBBK6zM}Dr}&M zcii-*XGWg@2-+?V_!BgY0P6I*l8NyQoC4T^7Au~sw-Ay5Tef~@)y*e)1D--+XgBoL z#MIR`tVv-;NGZxTAUhSm(MDaFHTE}qseTf%(q}`wpPyNvD3K%rcj|`vcVqGGd*1uf z$e9^xYH%rnC=e|%s71cBH?8uarw#1*nHp2PC=8(L%gkoZbU;s0fo2*fUyd&aZkG1J2=mj@?&+ zxZn8@dK|l=d?weHb#git$Al0CaDLvc7b&34)???l6F94zUP3vemp*_3dN~zO%1X6p z7LDDEi36-m!wCybmALTtq&z&_@&)92HFX_ofOv?lNIqY+6wN>zDx|E@)2+_xN1-z6 z4IFXO;sE-lIboFn0KNV~Gv+5g?VAxNT0bAyGt=K9ncSb%QcBKQS%9fBRM4HEtnjL5 z467ZPIE<;EI|N1M9Y$4HVMZZ?8Ya(`6JwsVIjOI?WuAOdA*o1ELArJqrrxwKtN5d)VW~HL`=vYL zRR#}qG*ReE8{~U8o}p0T9X0xTQ~nE**Iw!pqgl-U$ip{<>b_|TNtvUJ^p?%6vx}xR zIpexje-Zk@XXGAWPnIhpq2sFPh$uP9mW9un>R2KWikvPa&WkKe(p~aBMXe-*e8XhG z(r;B~UwYezVNbm-9|5n9JC~@Niac{aHEl&wp+u)eQxI|?G9_A1lhLB80)0qlP}CNc z%*;>%`L-n(lETltF8GPp`KZ$#CA8_C(rELFmpvcgE87DuK_NF>#he=X*=8R8YdCn$ z5S3|&ZvCUQ9C(fF-c0u?xuoB6*#1&1K&pT5zlcOVpvQx!2 zWe=MPPbvkP%~88yyvUbgxq*ToK{TyFqx`kni8GGSKx7Bzs|Llz*!&Mo4Z#7NqZIB3w9}u;sMPTa9SQCJnUd7nVicA z3l}*v`u8UPS3q8VDO)x=w^(CXj$*Dd6nDSM9kTiuaW3Dvkj1a~cXwZr;JvR?cJy_+ zhhuL7k>y|~eJMR>P8DtZo2BC+7Z;WZ2&7e9dS)hcBlc*8*i1lpcDv_XM;U=Qqp8u|h?c?~&yK{91Ic^NI}>1hn( zVV<6UPSj-AG2eRiIYNNp-%$yRa!n5+G8F*A63V|?xA@=PV4>;uJ3j>w>iB~lfj=4) zcB>BMHnMLbRg|-nh?O44#|PZ9SsZQ~^^@i4(eI(!!8vlM+)+k)hS2p^adr78EPv%H zyzoOzHdPz!`7&LgFuKyrf0sQ?sUotg+vC0HoG^Cnof{=8t}TrK#9iBIAtv{#id&Rx zIuVko-k==3edUrY9DfZx*+E1Avri?QnQjEJ_}P4L=%x`UmYaeUf}W;S1$n0e$8T{? z5y|praU(Ebs?MvqM&+6&l$-650{>DPAIv%73cAEe1i$h!SMD||bOt-W9cQKvmoRb5 z%xLI?O_zsH{vFk(yCu{pRO5_tV{Y`8sHQTnzb=`WsT0tU80a(fr&ZUQC~$XO+R0dkmMAx3mlwON#Fx{+lYZ=#dsPmUs1dKe$Ra&)5K z0Jl0>rz+f2wz$w>EI~c5sbK@Ldk=It95W{ol^em?|edJoCQpD zdFTya$%vgr)XLinub%C}fUe44i=;Jva}m(Dq$r&qvDaK0K|XQbQLTa z&>FQyS)XbnU#CV#<}oxzWVD%ji4mN~iG-Fs+bwYWdQ{c7MuQuo4w498kIScy(20{W zl14hms91BB%*oy_6a(ZB17Z)w8RwZZq&c0b|1bghq90T5_K^=PRAi=c=Wb$e&9jM*8| zV`^ygIaak`*dLu?etw!zi90_}bU|lqkN^_{zC@V=WjWs*?2!`t5vw5j(y{zIX^1~U z-Lys{B>>*G(CT{OVHi*vrg0Q%eq(wwsC7$EK2{a@I4JB+gZMRTI8A7ezt_`gzTW#w z;qqcXK95TtlLa?l^qDFc;K7Gz7TPqPCRdg?(qUwMr>d}OcFvYngbr{8-Lb;`5$dkB zNK8JZB|pz(UQLCXqElPQdT%ho-?0134fgzU@Jd7CC7%et2r2NnW5OHQ56W`9ZgHWk zyenzJ{s?u>I(VDZ_W0p}Ls@w36Pim^-@~SWu3%Mh3C!V;u(%kH_$u@{nh+|n{8$%) zfUK%BR(bv~bOx{}9c@VFC47X{ zK(o@JPL6>LatSV#fR=-Oe=w0(jPQ#=S)U7*1^D4Bmd>_9MR+ST%2tlr4dp}(!IDdLXMjmtuaS9q<`brl zD?nCs`Ks;D!J&)cSR*9wIhC!AodNgnT79BCRYBHTtV*7LlO;j@q4ARxTl!+k20<*;V#GO`nXl>hRj%aWY3%Jqk+ z{npu$Ab^i5ZY3t436GI#1d*pO^)k9|2|32xtIuG_Nj!ANF5U_4br@e12BKDWNw;r zQ&S>WB#hL0Fx)HcOUkc&%#}+YE0ltr-*%a)!y_S4;bBN|cD1=?7%W?b-dB9aE>+!F zXw02$SM0p1kbf`VM}9*h?|g$2$vliQxrf6rM2*Yb=>^B-U{Z&HmF9hjoivmar|xG9-DahVWxjMq)0D%<{Y+gc9RpH zzj7B*F!+pIX;#jn9J=lDDRzZj{;Bqc{lq05S4D^M^b7pRUr=tf0R3ejZfh{ytN@DQ=*X+NuosSDKctQC2WRcjhj_-Ej*AwzHJDG zGB5qD-wGTjoReay=7cu6QyQJUV!I~;eC73kN>GS~4NR$#pKd1MSHgjFhA5Mfs*2iN zW6EsXRyJ37A3JSY+xg*_!AvCM9aN+){mQ9ex~R!rPX=bCh-^tjHcY?71mh{Qvp zGGNx7jn9R3iW%a}&;bRoc?CuBjVsIb`^gK>)@2SG30EowYUL=)cHz}doPLA^_TZmO z$(mk!`}-9YX};`p)gKayuxs+cB9^AyaTO2||6HXuDyvO_tgRNAJSxqmwY>&Z6D`4( z?<|X=q1Y$K{-KjUm0$yKa7W%=wO-gK-(I*=ZWL}#+aj2jM-RgtuQX(7sI1j;zalP(KL-~Tm4c)!%z`Y)!fFeWNefhDgkUI!Dv-VEU75lh z0boyH_P=#5U*)Y{f6!Y$5XAaO?}zKl_j*5Ezr|ZBb*FpFJpBGA*PWqrjj}b3WUg5X z!0rh?;QQb!ChVQ0uTN)|kKmyFGK?&9@>^p5&XcRMJl_eIN~Z5WL8)?j{_1tCPso@m zTWix&8>`HA6qC@ByxH=c%BBD%bH#Qd7vKxp<|4_mjh8iJkraSBYp)@`$?}cCtm3!q zV%Ch}!0)r0%3|2g0@lbfrRI|NDHTyu;0y1o3z!O#+Y)H@?N)RiFD^SzxjgN28=4{uqLADtXULWp^Zq$oXE zMvbZn@ZOZ*(ZI+}`a8`0IiirhAnEm2JIXb$|; zz(hGQu)qjN;q5p#U13Rm%4sA~PPffLp}JmJ>N2(~?@X;LDSBh%f=J#UC#{9)Dq4o9 zM8f>B<4UMtGe=DZWThn961TkmT1ho~uJTiCj_v4Am-5SYX1-#kctL8CTCk1xbPS5IdcePyj%{9(Agxqj@h3{Cn?!-#=yLNWh^z=yO7+};K?$|)-;gW+4x~_ zf{*jP@g(-i`}E0c<#((tDEBHuZX#V1?ZRUQ&+tG7b(t6Go7C|z@iOxDZ}nh$AmJl&6f z(H+L*jnu#fu1qXIeVeC2%XB-kVuI1d1x@sCk<#E}Ho7pkSxco)z%@qOb#A+0K$ zDWV{z`+r)DO7trvxBl(PFv`}PBr_6p0KJ8AzDFZ+jJtWX1}OzoAO*JMYhSRM|9C3I z5%eyI?v+ZbCK)|b=rz>&Og-4oM;Uq!p+0_^V4&>bxuMyCeEM&zqVUe&q2eWh7x%nE zq$$C1H5?d&q3;)4vdU>2AYU|`sOJT;nqnN6z&S)zf{`ATO+R?Tr>Zx?AL|#gl-zce zre+C}ZYd2yynBkD3g-2x zK&-UvG@hY9UD^Puwt;QDuWM$y>Sgt5uZo!~r|=vC8844>0GPV0;mpviKpwrzsxX|p zoq>2sgbRBfA=HF&Tn6VjaNvG~pA^%Z0L#WJM%W({11r?u3bnF&RpT_R`f>MIR&i9p zq8F7f?fDm>CcnOZ&jvCeK>AY|SzA5+Bb5{hJ|7@ze(V7nPvk2#vIlz~8CUo9qUwyEvpu;-QNY_) zrD7@Cu>@@8-j(CEA!yk1u*h+l3o2WjBkgzN>AwcbUe*Ps1aj&1R_R3>bU}f*=g>p* z94Ep2%SB~F*C!UlPTGagGTlm-*Q&HC@LK}0IGuMB?eyP)Lz=|~1u@;SF&wT^YV~{T zbY(540y6@6^meQKVgNb_@a{O&IN7scojnJd;>cEH!3MU0KTP=8g{v{8$_6xmzL0#g zRW(^;Yub=Wo_}&SqqHQ?{nYdU3zIu9K<8X43D|pB-}#$(*=n z2;Tgr+^@*$om>*9#Gt5rBYX)aV9C13vC&gRR8w2v&Mf^`AnlLC3;)T zf*9Vhb5?F@M@5K9BO!QOYzZA~Q*&UZEq%KfXDr4LFYxm$!+$W4^7sv#ns1sF-jXg$ z*Rhjd>`YDVPF`ji8e<}^^7MxIyDC? zFpUFI^R2!D2Qv1rZ=VRt9^bBu?ndzD0WF&!;>5+hR`?E5D8OYX?a)vw)os2%D-(!i zZH^29OOqqnS16P-+2O<`Q6EEF(*jTd#W33+0U?`21kaulartSA8_!5}s{(399G{bV zum^-tkWbHTN_?0qj0L-6qeo<>cZOM~j?8(T-eBVhu<#T%fEp33zPb$Ea{UL+H4etxPqtPHtw= zF1fGLq#&a>m(B7zzvP07~Zv@^(lSG!FQG89==Cl_m(jr;^pWi z=iV}wNqafYJ#tay2^mL58b7T|Dka*RSXtxCGaQ#nr8&0x;M>L-u(dF=WUt+L@t)~_ z`@C%?q=||Q8DQZ5v1IE4PIabhck6#PxFPvi`h$N;qY^VY`;vG&z=1={*1<7khNKG| z@egUp2ZoKQZRJTXW0gWFzPCB8h#N} z2C)NY2RnI#5m)b8Ql^viY({j}>jVl$0^MOaAg=DsMGi=y+X4q9(0zg#mqdHk53w~y zZwSaok>qldh35^IiQAU9Ouc8h3jX^0%R1$`Tm%0HY?rayN^HuWN|pBf>vNFn4e(*q z06He$vr3igzLD}vCFviqVs%bTMLmcJXA0ZUKQ&O)|;+Em+qTi>I& zL0e`2UF+dSMI*Fld}L^|aDM;%?U`bEK5i}B1cpR*2eV!KU4@b0NnDn#M;a>{;q6Va zFr{$KW(H<0W^bolYNxa(F|U`jQ?Qc=v}Fov@vP{NYo7m>a;clznsP2+=4sj`!d_6z zHD7BUNwMmuw_UewfOklDK);Dp*3hyTjEIbG&RW#Jh{-cG*md@Lq_MaW_Pcos1NTck-A3Axxr5kPK=L&H*(Ta1kR}ikzN=0jS+R*l z6QWh0cdb}ALl7YdXxgxjz*t&q zv2$z%*2~bro$7;Lm43Cuco@!5tGfjm_)7NbOgirSxBq4~;wqO3M|=3U7AaH0(YcL~ z?d+7sH(T$P0;Ap(j?!?U@jjoENB7=plpE~7Cjoz<8PCGy+r1K#0E zOr(mu-S&aWF{a3Ox?>m}QHEI^N%SB8%7rs9diC?i|DSy^W+iemtzxO-PHB(i1E(N8 zSFgR!`Xn?9MV}VI$Q$bw{QtlND4zJ-WcOfJIdS>PgL!JT@)rQa4X9O<+~k z_el@VGtC34UYL!sbi_Y^C9>!JAKu}Gm>Bi@t6%P?z(j2Ri{KwFU-3o48EsG;*$`fV zSzFXz+wR*Z0TRGsDfSwUdG&JFc5pjDgt(A48q+27NRJ*B7!HXctr$ zco<9496!NyU;cOkn}%OOzkq43B`7ZV*a)o*?kGbB7+|BvsV#_*lr8;k=qZe$ zPqXd`yTC_~2l?d%HU{~3mZ$&QkuyKs?M|mTP}td)wkyZN+baOv zZ^mBUr%wSLfr@?Bw=pp6d4(!bi3r%vQS4Y$aLyzKngO)LU_4rjvcbkcnLth^bv0J< z{UwLckm1|6NgDj`Z}$)RA^ZN7rixRU4;XUs1~G8nrs6CNv!hbJn9rmOUE@xZOPIf2t*>);lY`B)-IyGCqmdi_Kgx zZKO4Q@5_VPq|kfaW|MrvWk-<--MV$Y%dsLVa0;52Lh<5wW+~&Hc-57XOtHhz#%qHI z;SL_PMO_42hE9SrhJ1vAhsHkSUrMatUXojoodHFOqnH_tC*s)>JhT75Et|XHYMwz0 z{&7~Myql$w2^;y?1<%wwCS!zCWc1+=?TQV|6N556r?hdbcxGY*ln^b8?TR&M-T9r^ z)L#)Tj38qU5P1nzi$8lJzU+A@adWtg2_S_iMfpchn+JRmVx&*fw?Th~v_v0Y&@bX2 z2`C^bBqK-}X_MSQKanCHEx^Ljmo8ZsAlur_l6d5IX_7dJd57^{+%HyuQ!~7oe%*PV z84GflTr;jS^z-`Ru_B(vMjeV>npfRRtUi0lv)DJN41Rg3F;)tAd}z4oO?8YWQY(_q zf)Wp6T0>LuX~bK^z}wj>QL&>?Kw}D-2umCtRxwD1x;D$$#xS_C`ye}evvA<<2en73 zI^S8G(*qR1fLiF9m6gw>QY=>lDMr>)`YEEX@&p{;=l#R6Fzv%W`+~*zhxLbd3ziTb zSxXOy5!9N+?xPv{()Jkl02~AkaQ0wf(2aFm4Wm507TyP(|=UYAf!o?m0pvHAkBd@2J~ zI`_kzWIQ_-Z=dZvd)!x{tp&8_s|XVE`y__e&(?)k5MU@Aw4+)-KP@4E2K#^&NW!6^c%U_w^g}C5z3+(Qz{|KZPHf zX)~zMD_ST1%WOB=#9gzHj&Ki)QN*D4Y(AajJDoT8*F^n-)pR;-J{n`_Ti{-OYy$i0 zRwK?p(`i?-{K}kXpXq#X%UwUgJTuKO{^zSqt6_|ZH#bEwy{7_hyVrE&_z`KMIFVWQ zMTdyc%{ z!``*OkQKq>HZYuA7G#BP2e#k9qF_|`9#ZySm>549k2c#(Ptr-?CCCqCg7t9b06usI z(4IQMModPa)i#rp?o5@C9N?pR*n5CD$Z=7u5c8Y#Lkn%>lRHCffkmohA*U~T_%s_c z8H3i_{G4njjpJ*Y=!#Wi?EW#7=WYm5MYD2cLi=|&DN&oqH-%`V;!+WPypIwC0J?s@ zn5k8H{a#=?z4+I7Houg6#V4s@n^!VAX)AzO*PVP)b!j!dPdvvlL@J{toOXJM5>y#f zf^yw&8fj%|C0!%Fj5I_5Tc;;o#s4~9DUUuZ{>QIE-2Rn}TGU{D)QAyC=?;ZNtjgJy zm&)lgebJK|N9BHqiSK&dl&~tSBW&dIr6rUilkWxKp{rzgRqgB`C8!ds1izJK#mZyl z&I?NVESV}tX|;( zw&!^zlg6%&E)}P6iZV#pUtAD~NA6A`%8j-si!UuYRYlIi)ztyijB3@jzLlN!tOa@| zu~oWV7qEcT2A zT1L}K-7^f;ygOylb633O+W~>{e&8fyeHjk0=Qo<$@Q2~!b5K;VQK~7m6~@XhWdG*o z2Jds1O;0-*eg{ahM2gIH=^W9VQ*e{;%H$w;xbM#p&N?hA%&(CaU!au274I0+!{>Er ztpv-ml3r^4iRj@Ve7m|U&9++*b07PVEV`vhYGl_MJ*?;yj|p=Gu7l?bDVD?nr`R0>mf00kzmP*9*{S9y%K{i$`vlHuhkNzg{#k1kkOyj}^PE1A<3Lu2EM! z1!B-rVxG}i<*cU5jZm&wF}g~g=E1WkHW?9BpLR>$ZXG5cFt!S(=5nK>&Ftc`T=w{6 zxIp!gO(C256|X(N-^?Tf_MuyAzYZ9;up(NMhekA8f;sET=NPRsHIWE^s?g%!fbo%- zQt#RD-1h;s6SkmOZh1#YD)(#bofTQkbAhSWCRe z%gs3W$4m6JCO#gf(Nv%ne8pXq(-h%23%r?1`3E$BBLJm?cn}W4L1?IZrBc?=WN)=X zUB*ay(?Pi2xWL5RI`-QNC|eBB*Hl!wbF?SbyvAA=0H8Aw%9k%>t*;ufXI|I;5Jxyb z-(;v#=VczyywX}7ptJ8yn1rbHX%qJ1Js!2~Hbfz7+p9SWXln2;O-6p{G*+;3HGZ@i zIAV&T`QI~hFTKdIna01d-;|l`z#RpMDhp|3U!HVCbfhBSWlH)Z(kAK@GYegbQiaZ8 z9*ud4wKTwelK0qn1Q9pfO4pif?K!a#A&k=L1S&$6sZ^w^vx9uMDV9bt(HSI@0Qe!U`Qmt@|>Uy z2|I)x5Wjs0&G!h#S5l93A0P6|ZP3(BXnk2)D_P2~Sd<9BUKdhWIX5X0rQ&x!iL`MgpbJV*ua?a4!{flgvizR`vnziqqL%Zd3nKSgWyKEJ z9s^AVSsE%?h@RBoiZUTE*(+D8iO$sc`dS?GY{0Sg4|I$``NE?V6e3@09C?}MLWXXplQvqki!6e zoVVb>mvpcxn1U!H68;mNff7r}f*lsO(X{fI?(pE9j+)FyZIZM%g)ystMUIWo$)SXLxpSJO)Ked>3jv^4L-H&$wQw)&LgNvc7g7->9GIh!QqQ*G z>bo%?lDF-3lU{sN+s&8$wN56A+I^cac@$8mjK*)17XQY6!%cQzB$}H7?i^6h^~0qh z9*j(%?XsrwsziF||~@^+@E7K{pU z;gv~2+aZS3jx_s#UuO`9T~MCd;CCWm?xGZ5N_V9P_=peQ0H$u6)t7hkC|9mKkZ>tK zM_m&+vY*PI8A9ez&-8F*NEovBtB_eZPYjjPdnKS@aWfP0Vk|6esXpd-9UQH-L#xEf zmaJu3Fh_Q2h&h>Md2=n0+z}M|YpEjewhSgs;B$cf$uMWiR~4)fSRFRPKg6a-7_bcm zA`Ggd>)+~_CbN|~%ZIQ~_}FoO>onAfmT#1!Zpysq*E+?ZQ(cWn7wW_HCi$Scjo%s> zRbmuoRAjN)-&Ka4`}8JZm1i4EtCC$pl_vn*3sjrjIm#vVTsvI2he0}?w}rQZ{C)?J z5{4~Gcxca6)_k zg>W!~RZT1NPLFv-cmNB~gm>IYcpMR16UZfyxZYZ61l8vr+jzY5Fgig ziy{RsDM`}5pYbDfpI4sqO-MaDO(~h?s33j98XE12n)zR1`Za3_sB2AFvS2UR9T_`v z-S3n2cCn$lo5)*+ZX|L8uWgR9+C-Q9T3xI<*!E{Jv2_hub9b$}dgSvkO?RA9OhCfr z^r$&Ot>YU^S{MIWu2X)9Cl}vtNjOif{FW9>zo|%ZCcU$6NKhwx6GfKa zkB;WiDT}UHvCB6D0%ccVC1ZUNuHlwnZEnKvhxg7wQ5K_6lWHd$%fFDl8=LFA8-F*8 z+QIN{aFZoM^j-U8vqYU76B**dEt7%PLw$cjaPcsX`TWE$lLnuJ#K(eA%ZlAb_3(MO zwMK$vQAtmdFS^(8756n8Qx|UQi=r;=RxURd5iatDX1f$iVjJ0Z_X|*=!ZXACcwM+i z12^3$Ti@|$^TV&$x|wXe9jDPXz=}SjWqWxP3M-98!%+mpK!)aX^mbyIL#&a{)pa$g z)!l1Tq>re;%ZVNP6*Z*2$U8v2nFgz3nP5$rYjAF&4xwB26^hJ=H{rI(Y*U?81Y}`Y zr@@r~@R?8M>@~p3e$AGByR@jR-_VwPoX99MtGGOu6&3mXsR6la?cY$H^8H$J`ptE~ z*xjlYM8WCORN;>!uUI(h z1u{Y-i}(z4;r)e3Ot};u4w6c-6iT5K>q81s%e~aJVlVU}hMsamwy5P0EnYOZ~2H#1|wH-y`$ohTW#Z(vT zAO2PQm$MzGy8Iul;Wmj5|BB=u(1Gyf~35$kA1P$ zF^nv8C-}xb^hCa1mrA_%{!6LSJ9n7hM>0G{nX`OHi9R#GU7q*HUnP6R4k8bjRue>K zdg~Y=GHfde1EBuaYlv@@e08wrFC~A%ZY@t_yWcLVT&=t0Jp|Jj21fPs;tsO!Rq0q= z;WX^0@lukTgb7Dlhrwf;D;ZPX*j6vCn}pnP--{3g3Uo>|86nCjM&Nzu1M72S=GKY*TBa2Q}a^y_r<11%r!9LTl zgD#TIjb%_s$1rqk^V<*OJ>I%1J9r=xD6Q5Auwofj@thgAOPB;O7QU>EKmNPpNB3k>K-wg5|SRPhk~k z=q1XL>!Q?c3e)a9kum(B3R>H*L$jSZ!IteTEq3BNLmnUVyH4sV{67yZWb=)G?CW*b zAZ$o6D)sz9wvDG#aX1S#HntX0wZ!Ou8iz#V-uF9ruG{(KAYUMb#w;W4Qir74sn|(7 znb{3teAt$P?7Dtb-pEQSn+&f(>wwDaiROvsIUFPa$692lzp^R{wqT}z`cl+kKwZ49I|dx04)=vR!$x{k=H2|SPgQS}H-Cs^5tXK9Z(b>$ z#a+4Bld)gx;%Y}4RlltZ{&-0(Q1uL>ej*!Qxx;Z95B`MRCgiMx7@r<|TYWzvy{}Oz ziZZdME*>2V&ATaAh_?A8cUyq85k36&pC!3^sN*s?PgJ(UVR^&mut@^whs#f0{ADEV z+AVeYN#^Yilnm^~;Njc5mSmCfj`Lvy1o){ROXc*B1fwA{QRQZXpKDL*-q17FBGy`9 z6#;BP6l;kRwb?1t4K-cjj-ZXQl@6(18wWoVB=uc^T6x)7yu>9mr~y=M1F!INT}#sq zuc+_#(#=vigA)=&x%-P#7xzzx_T6$9LOc5;xRb#;fFkVaL=a0*x-_>X4<1MaN~?Pb zuwuN{h5a!xu%gM)VHzROY8-d!;wNq}Ww+85tL;1qtsmwFCDNW(4;|`g@f@V`xLomb z8U67~-Q&Km7gfvNNC{B;f+C_G-l~LcB;fFWUF)8Kj>WG%4WJ%)zoUAPRv+TH5Dw_9 zLAX6-ky6iJ#Kv}QcBKb3vG^fA*S4mNvAFzA5J@Wi(Q_Q zIlGta0myDt3~wtTS!5zLPHr&A^+_6MSHtB2d*;xpVStMQHriKOAV7tfX^BA{20VK4 zo5|3+Tjq+;ww)AgP$O1C*oCVxrOF00fZow>&*W7! z*jfDeXV8_iZu`hR^QAO5HA6tUhq1;Qs2$%0zbv=+WMO52)*SXba7(sFk+mAg8i>673ZBVvV#ds-#xu>1|XFJZa6t_5BJ{<{AFko3xg>W(y=pazO5 z-cONCZX^?lwAXpWm2&NOke78+k!J~~CB=t-WXk!05=BsupzF>;ea_jWRxY)bkY<54w8EK)U<+3A+N_G{7OIwT$qG>` z9kddCJj^e$5}zTL3iwT1m^)1n2UXa>TfD!sFx_%sea=@YQZ70r1QWplK%9W_WH$w$ zI}8_=81~x-%w;2F{_n6IalI^9v&>XC?23tj(VO#WEfhEp#s(FvYrh?$*F3%p`6v4<``hEE*x3&^(zRjmgO>N;=sdxGl0oi08#C@l{9n;BFOY^U){RK4P<0cm==KQYvf z-J;m?9vJOu3)PGS5Z9cvF8SHY{K7u``GI%lQXYf7t|X@fmD*EmD@Rub^*-$%7tC|I znuV9e0_dDGs(yvwx}Pao6P%`rap$E9rpba39N{(51AhlsC?xB7Mva zjmffhf5Ru-U|I-Zv-D(DK&3s)wt7@`KvO$)FTCca3gt zPUN^n76U1_r;;%XTgxYNL(O)nZLuR28Xg}jh|IdM?Z^HP&Rj4%#Ell3L8Zz{1cdkv03&Y1%>hItC2R1{ro`Zn4uvPeBaV-RAy-#7x zeM+=C>v`K_<0lpJXTx(<{>JH&>F>_n{RTdUU-WFV5So&nhZ3~nJD0I(pax`=@D?@| zlX>rNQ2kT0wAH6#_4i%mPyFSMNywjp^d$MhpGnv5}EH;QY3Iu(<6a32jynV|ij2{Q%k`oAYIS_57Th;Sjmo!hfREPdr+p2g6d&M<2^w-*! z9(YY$K|)(=TUCIO;-%E*`|)&=51qq=N-R%`dDWmMoD-ZM3FWAmj~Zqs#Wi4JC6&YC zk8=R{a0i!`CWh07d5Zinm{n!m*bMF zaz|e_9Xy7jql~K8n^+GvR!YTD_^rlz&*6au7~IDed=GdA_=54W2=dB*=24&-$O|7} z`<{UWAo50F0XmsM&v_*1S)fj8zs|15Et4Mz`Wr%l>m7$h=$bvB<1m|0=yw;XivV`% zYqp6?sE2mqO}dtSaloyEPF!&&D0Hl;ibn1hcroAVbt@AY1ogJyboTemw$&Dn3@=jbfXqADxyZR=-| zMR?hevhmn$yo%2bvkgtosHv7h2Ye0@j`zLdYE3~^t- zead}ZUidpT2}Cy&e5=~Qwx&-1nB}^j>P1CT*KDahp}DAR4WE(N)vv=+i0Q2GHLS4_ z+5YTo9_gtu_$lwS6v$)%FMWu>>lC~de@A2SIBXsU%%-KuHzSSsExH=tf;sa{T53KX zbp%?7xp+Jch5t`G-FFvf;SG=Qj5Cy`zK3`fP6O_waY~i4fE>+X0!{3@fn)d#@GlQl zF3%T6-HPv`@tjM!NuOqLyr*M0~6*J^ViaO_PY;z7@mJ0bt{}*;32%;!pGlU^8W_rR^l*KS@aaxgF@LO zb~-$nnTg-1>HCeGM)cWlaw5R0HtK(wYq_=O)K!1~(@@LO*9iRNN$h~7wQucd_MHFS zOHJ;MBaFw*S$xveu8Ydk(`h+E;f{&aUsFHDNZEMdrFb01lNqD(e#)Ak*VJ)P#0FaP zz8B?nUsY9Wq5$W%N7eX?vStL(I~RW(Z(YW-R7a0M95C>N9<}DwZ-D(xD7%k(7Cy{O zJFXROXg(B7#IHphPGni*aDu;|`F*x$kHzzEp zwETzd>+nxz#_X=KU)>LycGRx0JMAh8ozMwpG(RN!kgjEMXK0Yi=4OJLc+{@2yX-0o z?a<{#c};%rm;ha(?*=v6sNHIJ6afnD&;dnCI&CO~xLqU^XJXWDwHpagXoE%-`R>TG z^j$bBUo@ns-D*n+P-q8<7sVU76SxNFMB{+kt#&g33hmIWit-uirA9&@O6(^nOG24A9oywcg{UAA zCt-Z(WYU~WY4v8_*3TrL<)fSHe(~4&?8edrCg3Sv(vRJsFBsIS;J&b!lriuHv$@y* zV|aNlGi-WJDHv&j%|HO5m6uv_?;NaJ%~n~q8Hkw_#@$uc%rrFbsU|1$CUdYU9e#&y z9ZR*;CZ2Bzz08`OBrlqm-aUmPN)sDO>Yc0Ju11r|G^_C{dd>PW^0n9qbT?9Q_ernP( zgHRR4NDD%OGpI-sHKw-F8MVF(?Sc+c5or(-oGz!bRis2CQ~T)4)pL{RBvenur$H#- zOn!o@Qw<$b57yB-R7?e>LFg||9q23zey73L1wdyulOz#Uq!#Hs^*|M^LIu>3v>^1I zQw2KjZG}UsPp#5%uVQ~o85NdRL@LIJlQbl?PM50H?PxnxP8~}NLW0w7-2B6^^iFXJ zEx}UEPMi|p@Bio}T;Pi27Y82f8}{ajaJ()6!87kf1esNut6M*Hj}9e9I6-Z*n|PZ; zck-bkFGHg7QIZGj36F+bR@5SfmKxR2-aYA#{)6jpDbPG%P6$1J?2Sox_8}!lAj|Mk z*aP?Vp73RG%Q7lN+mcYV)803;qx&u-U}m>J+>&FEl~Vt}0$(ZVhEYgV%K$ZMn!5ut zu0J{~d+lM0nvpOW^Z*BMZVDH_~(nU>V z+;=y>Arb7m^YG5aJ5`2B4DzSH{Oa-1oV`YINZd$gha8}@q^Wg_^ooMt7sm7-eWL^w zt697(r@C+!AaaZPkO?kr3c^~&WtuMF3Ve^4LTpKGr?^SEnY=9U``nl_`dS1PD_Xq5 zPIcqLW)Twt5N(U8XejkjhFsZ6{iOxEi$+^dG67~tY0Fvo%Kyqq1sCezu)(KWc1Yv zD*i}XDo<&gatbezAUB$;Ib+-b1Uk!_s9T6vDEywroY6N_P_c~3%Y3R6XP%-;2#|}J z8;MGNUX#s^%W5o)t%?SfBCqW={DPQk3dG=YtgQ$BLa2soJbS&8Yv|xq>tE=qTOv$U$}|a2*IfZ} zGs3jT`Y zTP7<`^9fbZ!*h3PN$sMm)I;59H&jhUrwO5e)9r$qQak93THAqkK$TQfnh^TP>1Ydq z)TKY3K-*lvW`WaHauOrIzSCb$@~;P!ScFCWMy4NxB>y zrP|bl4ygw!Xay>zLeh-TTu!C?Q@w`P>S~;ti884X-Am0?sDkn+zceGX6Gs6l#qYbR zD`m07yzqCJ%VW`pTdtC=>K+ML1*m7!nWz#{;|}h!?@l?pycf{Z-7Lwm61W+Lh69x5P>_4>Xkr= z^E0nNM5qMT3eS9m5Rq1&jIcAQJF0>-a#pVds*(7DoL^VdD@g>x zNZa1PpP0l8c-gz@6qJS-Ikh(g%80*b)_w{()9buGaHF8VZ_HVjZsb<%5E~d#q)Sq&VQ=@s(MO35F2M?aRnKP?i&O$|dUY=M&H%lkbGRpoI~~~ZMh+zM7qiQL z0}#<7@k<@4e_%!6qCoKL!ST__WK4kRjCwJbS|ofw7A2(UNT3uaPv0=k!Y1< z0#J9SCD{NOaYueHnWILyBcl^_S1M#3puV3@LP?0m9VYjZKDDqVE+^H%TEu?@8Vqo3vS6S=z1>to8QH21s2?rwb1!o#5Ou`&qWpsG<>J!r)w3`% z$bhPKB4?Dt!87xW($~8a>f`VBg^?skE-5yvVWDJzfuzQXlwJ%6+yUt1m%EHsfX?~C zNEC2tYt70l_&x@xi_`yhJm%>(qnVTW{>T#qqLNaxIu?@*G$3mO>Ggwd19a-ET?zIA zeLu4)1nCv!W=$-D3^8EpoM@RfaOjM?DSI+hAXcU1N9(DJ^5PCaqppcs!C@@}`Rlm` zo`CnMYi$Ad_1XxXpf91V4zOD`fd>$s!CTt^4)6^E9;_F>f*_G0c;O5uO6D#m+3Q_K zdzY+jh5^+z{x&{GqC;T1)(QIOCeW-*883G_{j&;h{3>-T$6)~9g;kTP!tLItTN85o zY8Bh?^VE}EhvoJl1Dfo2TA3u)8m(Qo3U8cE1vuTdigo-k)#voQD!|)0=duTw5*Qlr zD-e=Pe0XKF?pNGZipY{Ovd^|!N$s@^;I$k(lIt{rkL(E2mXpNRoym|RO85cTcm!$_ zW*~!v7Pvy?|3nAsqPz?>E6;_)cBd;Wd`W8$not&e39LMjEM#?l6_&OH|Ba9npz;Fj zuqNQt1@I3z+$>jY!T;+~0<>>=SC>>(nzb524U|nzbQuZT0OvU2+B#8DZ@k>V^KtST zL-DPLfpefhiil)u=SV96dSmzv3~WsO(&PjGr>MTJ?58e*Vm z8kAWLhs?N{vSQe*${_;Wk~)S=Czpuz*3hz3-ZUToC#VF{$||#V14f4C@f(~NnM>f9 z*#)LNXAnyem2~#Y4VpelrImh8f*&?RSxorH_mDG@?_@Kv-Wr;}3E|wWWCO;&@>!*L z=(1#X;Gs#YE+_>J?QBB5pvvV3WCJb3tMzJx?!*{ZKB*MVl*kS^lrj4dlGiZEO6qas z5wq@99y^Va;n`C5igcIzq^)=(#=rJ?Wx|Wgx$NMBd25=XeoZHvK(T!J5oL@FpBWz+ zc8qrEqe{WhrHSl-!^t8iUtHfN7uCyM`29&4o);GWe!ES>XgE$;Bia)@RBx|@a&9PC68$Et=f zca5TJir!WwQ`oLIP)>Xx zroZMt!~D$uX+f2>iC>qH-51h^&t@vni5JhKvH(NanoFPT6FD*#$^2t(32=K>*H*;(|xkS`n|J6V%n7=vqcw57K6dE?Wh)FB22I}eQ5N6RFD zwp_}e!~dvoow_)PSE5H#SSAqjT&2K=669D(;zxa(bLqu=?~a7TIZ2>tQO+B_#N~_( zZ!MyR?|#^DjJvAz;-wGfzVfZst4mdO(n|nlxpl_*Jz?Sbik+c)zl*E@4Ay!g3v&0n ztO|gz)>qX@%@T-DxDqJvaMHCva}gBsA*9wf=`E7?jAwGUXU{%gIE7V5##GWpTZ@34 z%SC*$A6i8hZ!ZS&9!lAFKU7L5?@0!7Z@8&+KZ%kN|iC4*)(*zLdnAJ-48wN z=2}4~J5@JCx|bSvjH3i--gL1-z_fh{dMT3vlPifZwz47EU1%&|?8QLK_L(4uVSC>g zA6Q%o!uF355aGk;)#4pnmm8-3! zjH@{VrSv1!r&S#l@dLhe~!TY$2#tPf9u9Ej*K)7FWLb)_x|} z<3bD^r8rv^8=WdWie-D#_^AqMMx2fm;^L$rPE`#N?!13{^V$Sm3U7`Z^sw?=FQO-;F69OiqE}JYUI{EL)*HqL4U5M$8L94}5Y4_a8Hp|t!_Msuku`m~ zTgJJ3VaJjE+BC77OO;Vr5*pU%t{A7Xf1`9C(q^Z6gh5nnm53Z$oC>>aXo#*E(%m!8 zmB7;F`_v}!qTig@DqbX1%7>lQ4PiB%x`A;h29~bB+@KXZJ*4?pF+i}CjbOzMLDhA- zma)?U4a?4Y5V7l@m#8W<3N95&5fL>#x{+}#g-xKk>I0fzH9Z7h%FqI<)w;r|)PV9= z02D9w;Z)LKy~4dH$E&=A;uD+8;{dRQ9%xk|>YW)}RZ@*7Tv0&wI;0UceWCQ?KS_2t zR|%6nrm+UA${}Z5*2yhKJE2qgYvkA0ZSf*1i%_4;LW=izt$5i-oPWFiT7AV_B(O6% z&H=~{?S}%2rBnOC&$H-~3n$c0p{rY($x&F=T>AMpxUt?IOuB4($G()m0q5q z91Kj?^+9LdPX=Rh6u~4iN;2Zu1x_u5%l2VmV=DU5w8G1^FGVU-)eG@|PF(Z_hzB&K z*H7b&b8CqCYhl?DechBlBubsjBbHd{42#k8eK2~&(N<_LYCyMA=>u5IS~m!*%hJ&w zrYtYdKz@}HGh>gB)tVNpKmr2CK~?8q##!HgLXodWc!zb>uLTlb3gw_DH)D;1^Z6c_ z@QqWOC2A95A7s|j-YLrL{KuxnUVB5TJ%;j(dOpUQO9g7Acg@JuVK3-K?1>PA`_a#T zOx4~eB+TsNO$-|b7%8&(E+{9XBd9o}nnc>UbINtUt6=UW(=4xzA#rt6`30&gYi_aC ze`eu80JoK9ZLPQ$1Y50pcYjUjeou<1YXs+#ZNU!_sEBt~o#}Bkj1aE5({r9BpA132 zR+k*n*USkdLh(cnk+yUU49nw_ieEcvZHf$d9i?bf{MEaLrl9Xl%e_29_Sz?f(sOSA z^xO1f#Z^${FQ~CB)Wn51&mL|qw-s;vpcL5)7?g#4AB=3Z6*RdXB_!95;s*%6nO1rE zrOx?&{{{r$2C^{FKIika9wHA zm0NNwzF`t}31R_`Sph@7;P zCr&}T%R@Qx(Z2|18fEGc(=O|HjB@iOzW(nlu5D`#UR*)>!^Lx?aqY$WYF%V$exjT_ z#y>_#zv$N^niTiq*E}}%#1%{2@9`5dOv7nOGX4507t$l$Mu&4<*s$8q&pj7)>Zvho zYcxjPb{un`D@PjI`zYByy8%fh!sWB=|5uqjdx>6aefbqLOFBNGX42dj?)J8m+2MNi z^;!cX^Q**4yvx*Mb-|D=#|^IitB8umCO)+P*}&dFR2vCpoxStN$6;)HzOK*`S>_`h zXZ+fQeZuR0T_Rx1oVsh|GF;X;+MgvKe%d{MWq5SpukKSrl#H(kFB&qfwmKN$(~rrV zTUQX?l6squ%IUTS_{Skc@XVb*JQj-GpsW93VCNGZSNyt#U6gXS+idYC!^z71;Xa6i z7Tz(=O%HZ@26PujQ{VKwq2=`3+B9WpBZhq1TJ5ThKD53@n|x;5k1U@w%*ao;TL5)Y zLV>r9YV*Ws8wWMpz#jhSZ=*~H_TZ!4rCIB?pLwlF&(`*(51DpYqc93M6<*WY65Qg7 z8N_w5aM3ecr0(s8N=*4i`OR-ms7pWR_fT{-7YWDyA^Aa$JAO}uW7=V(my0Ivn2m@;h&LzFQz@j&{Oywv{u-*5k~g|H_d1_V(aqu7us*KuRURWrQ&P z&q>V!Aj~|EXHR=3oE~$-@1PHT~@q8|(YJSn@cL$Zo?(<40Rf$4dD$0eWB1^^G! zuIZ`D0y}6NaHf*JI>`pw5a1h6NT1x7m(xfK4*}+-_i_$w zT;!M6CzfoW0SQbP!>{hH(fMNVNT4Rtu^R}{Sm4}5zu7%Os?s>4Nf@0i<{s*wVpp_{ z@XQ!8u{WFb*Nn~!0h%Bk8^E9Nzrpuhz-ypiv>ihhR^AnQXZ3$Xz|}~{Utj=U8ZaiM zlN`OGAnZ+G9uU;&Ft#IOCQ}wg^S`Z|otX4Occ!PBGqOl?L#?YN`uL`Xj%mHSzulXj zU_XM>1Gk_V0#)$NnlnGHg*d3%2AcSTJKprH+9v?Qwo3#4q&$oO?i!tD{GGvNNXIU~ zL8H!~w`~U)g6~(9eFPcoyuqeAj9o)IpUI$t`m;k|DY^vs!(Eex8hrQJ-gy(!u?hgx z5D>WORKulfhyu|PgIW|i+Pog1TFBi>ud&8|gZGcg0xWC{H+R=M!m4P!QHOL z`=tn3!9QVr6EbfjX6fOnkMiu)Ef#tV6fZ+?%jQbA`X*ALNP53s|E-1+cC`eb7TF`Zw|G+afr2 z=l@RxDHdpSzrv^d8D8XBx@DxvC`u~k9qgNIm$eS_Fr)HJ5AesIAvTYdi;h$;pGud@ zy5=?`6FnlPuGI6rCDf~>wqSC_CiE!1blkyWTQ&fzcNssm#f9N~%UP&50HXs`JEW-z zJqD6ma$V*X*i1L+r(9p=uG3oHY3?=~fxz~9pd?5ZC0AdNcUfLb*ji5^Ls zR*-K|#6m#hcR;?g=b+{V<~lL(_&isWhEs-`W2^(x4J(!!tdvCo{K24?;wKR*i)BfE z1T$YzB8dmy;TL)ei&R^NnizhmMeEo=;68SWsXU@11hEN2EShjmiQy)OuUmvib?FqI zg1!mt`#AS#7FelHjcK|dGw0V=Z!cxPgs`eG=*}F5@Y#x^XXxk77x%nOkS-vjx1khm zA$)Fp*w$dl4TM~JE|{Zb_zAuE%>z-~cUuQA$-3l~n-+QlB09#9nKGsRt?$5J^F=RR`vq2D=nH;WL z=Ui+u_ekyY{9#@MJ$tiKoV7 zEJ<=l+^~lyjTOnb_p|L>UH`{t!~Y;{4@)fJ(YlOjMXbZN2X3P;s(psb=PCDGt+3$+{#J&l)B|tmhBh>VQBs8CmI0xLa!>(E=$Kf1v?4H&8ep~I|E>=!8uBAKq z@Rq%uy0-a-r}y6TC=N44V3 zp{7%Hoe4JA79ilEDvqsW7m>}*{fsH!ce)^Njyqs*%jdL*cfN4^He_*Bf&v1ehw!Cw7 zOlPPnS`#mb+KGra;XPZ$D2h&dA?k27x1r6)Psbf4WTwO;9`l@NK=wbr>4D>tBQ ze?qtX6;n5&O6R9NiQ9Edua|!Pnr?(t{Z06bcmK^)hvCqeVhx_R)7XD)ikQc4e#Ao= zX8^H0vnvQ2juezJ2yn+O)+EAlN`2Hh0C#A=4*HNQk+UXLVaFObVaHx0p z%@l`$O=MwEoTzb0>zgSeF1_zD&%`)-RW((C=p=lVB_aLvq=UK!)ogxxZ|dR{ozf;f z4*z1`;%ue%t1#GmaeIaXGc3Mjc)ViQ;#b$5xLoCycD{viq0KcFf$BcqUmd`oe~hS( zGc_mOyZ@#RIUKLkisRm4W_r!Ki8}Ob!e>D{H^#{xPR4kWzn}2*qCXJ&@l1KW%Gsr& zE3v8QM|R1G>fma-x*+SXupwskwoNvyy9}*&&2^T;N?a6Pu{HkwR|lAfoqs^(iS}Ne zO+_F&2_M}Pjw_6^)^AqI4d1ifbp&&=1jifE&&=^|zbSO++o6P?Yi?TLG9tYW7Pz8jv*BbhZ;t+e+w!cn#72GxFNq1c|PKqOLZDSH>? zKjxj2tlFj?GxQ!K&ATeH3!xosNVxx+@u?>>b47a)`t3B=a`q{Uqyr?%S4e2? z%EiF`Mo6muDa`_An4k}_?*h8DWeAcv*I~tQdvV<|FQxdIu)|5*&Z@X&j->h7T!#_0 zo%i0B`B#Du!wx4|^ArRPs_D~v9;xlsT+39I#WLQ%I*Erz@D2y7Xl!&|WF} zyLd)CETW5_7lZcCR1*DW zFa1$*{P(9yI1YAKRz*c_lg#R`*dnc0K6Kum`2W@LBeiiPo8zLuK)iSg^*BP-a(dht zM!6t-<@y+p)Vjsw<A1sAw|UUj4q3T#PVJb3FF^6e$3zFl5_2Na@B2m$ihq zTp6vn^Xhv89OD7Foj5Fv9nC1CR9rKHZFg!`VJx|)j{IHa?HH2f#r;ZS_B7jL=V^mz z`u8ai(WXe3*g&E;bB_rrWq1p|sj);{^S_||aqAS%g9THw7_mcQX9&YqEo4x|o2J?c zS0PO!s(iZgIJW5bE1loB7p;i&xX;jdmtUtloUn}0vQ>%2UmS#d;oxJ}49?5i)qxf8iEkz;t!QI`9~v+v{OC_^eeKw+d8Lh0@K%+D zch+^-fpxZX4pn6DdTGz+gL9;$iPruw(hkaFAFxAtgU^%G^{isg)79R^*C`GszZ7~| zHUI7xtdLK-GC^gEHvjb_*4B2!B)&j~D=!)|IsE9`_F5G(tps6#vpJ*X*&_{+@xO

J)Lz1ZAyjcjO)14$_mo^PxHVCeurecRpitfP#E+-+P&*s>2Lt+*DK# z?)%+%^WJiZecYg`O8XF_)H+9%>>K~tIHqEuT9f&=l_S|O6r7rcrLGvt|9uSGG2wh@ zs;a(JV~E05sOC9K2!3qEMzt>MZyQgt>7w3oQQGG(3eVi$O27HL`dYvl>bZd7scL@f zrvPp@Xj_upIyOlNju~F;S}KV>79c7LA@%hWoua&j%<^?AT3yI5b;Y3h_p$#Th2E5k z94BQ_a$CNd>m1MH8`RqOI#=@ZHPk6~2Ei)F;d8aW-Ux8MBmnuO$7$9)HO)sjJwq)C zng@@XSE$nrw~OS8gRvjufTh8!ULHDo=k6K7f2U_d+?SH81!cgI{7B|q zwb66{OF*>0F6In_@F1DB1q|FiD9&i{1qKe1y;W=hNBmhDl9u{FzF{mYTt7PE31zTa ze6^8LiJrw$8yWS4vKY)ueW^Z$32Jma9(+&%_=VYC=(5*>?)(~bpg_mRwM=^LkKlo?r?a5wZYURaw-+4DDs5RhNvx7q)<5;IhCA~q>+Kly~M~JVlTf? zRoM2^SQnFp)wQ)NLa8)mXnPyR#bRP~r`zRNs)7w^MIfYNv!yCfB-H{ZCo-|xwstv& zLRDhgS}+8YiP5#RDMP80?fqe028LLwj*kb`ViBn73Z<&BP1{X4HL{bzz-U@d zy%(na6qYd1g=Y$d8QdsX*~uI7An!q~hcIRe1tUMystisD!8cA~Ee1-mM8al^CCQ0m zNTCGc-rpl9-24eB*CixKbRa0vlwX>aYYbu*R^Q(42&K|gp>6GWJ&TFacbryXX;d|~ zqeH9*-erMYcBkGs?XSGhoucQ&zp@2Q<+D3e&-!o%)`11u2w7?)Z9v90FzKK=E?x{` zIS$M@kx#EVL*W!5OKqeL$k+xZ#~+J>+!Oxvnll($30XQxP68QQ!K8zdIJO8xRv81D z7^uL6{=Pd0bpoLyt^s88EH+>f6S6N(KjMa;n~x zOaguMYBY8&p{16hRjkeHhoh;d-^$N(mB;M^6~^mUem12d70ch`LmhBDn0_sve5M{# zuaj81vzwrQ7fj2kOU^t@M-%0ANzcf+AM?gPrvr!|VxXy@_kiC_Jk_}?oHEmR+#&L9 zDjZ$XMpP+i-zjVp&jNfhYfn1U6b^5k&1vZy#i)xPgKjY&)E{wFFTog{bRDU3>gc|w zk!wTPC9`4e&g&ZS)Mlyuzgef0o`&r#?tH5p_VGi|FBgNx0}dMaS5eaaB18hy# zB3{Vy^!D^Qy^sc}_cTwg2QwQnevHJ-S;RfY8;;=Xb`l(LayLmUJ{*k57VM@38wH&r zlvtNk&q%zm--T)XdIk>}tX&JUYAkD2p&CrJ1a%@!6BCAzM%jWcP?W_Rc_PZPl2ur8 zYn#c+utFwhiIVH|RpUeKqywqIxqN2NBZOR?7wY6#*>r}I*gOB-^Y^UB3v01n0C z9)O>sS@bY>ty9X_dq1Pcb96cYMzc2%ZDatS)6ZqNKiAG3NdBmMvaov(zlmI8UQO-Q z)Lu>9)zrS5gCDc})ikeWbT!kf>0C{4^~#?B4II6CZ|`s3Xz<~`zP$VHFe^7qOKxT| zGO$d!PUt%6Xyf>3LFs75_+Xq$q)o!HOp@{#T9?$x=%{ZJQ@_B2% z%;jcu1Mt}-E!UvoKqL*@sAUUDJ`BGNbU&YX7VG&v1QM%aqb|p3kT5ljPg291U}2Jb zU_tjNj%&CpfSXO!u(mQuL=BUHDI|K+eZuHI-f>*-|38p7;BY~Z&mn=i0-hgayJG3> z2r!2u#6?TpJUXJX+#YTWz~QE#fJVS8SUg?<3s1E&QMqb3X;QT*13OFDsmmws? z(F0!9QsKfqFFhVIv}pT6tc+R>ov#W%+rvG9e>`8Al*8;zBZbF+>70 z1|R@kE4kE`$rvr+T8WSz!id(QL(+Ls5sWAROr&a4!!)T>swUNtDx?N7BE#sBfhpW@ z2oI)Gv?4u)O4f+NL_%@^BTNnpz))i-Krqm>85^|ebgCFbhL9S>hzesw1*P#KjgbI; z8l>fgX}BB$d3^aMi1~y;QDv@1BOl7$$s_IqVR0s^7C>qexwNSft?92LeAuBUb0IKs>vX&BC*I`pwqVJHDV; zr0*NQe+D7eI(>&Oq=0yqCLrTM_JG+A1x*#gMqvo(-vvtgr2^Ytx2YyO2JGf4j*?Th zBz0bWdQzGqftJtkR{Klo9iX5uO|VdnTUbS~x5v}ohRWKqOTM#A%H}CZPFSjhl3ajz zaf$cG8K2b4=P#&wzpy}mEX)IDJLI&2q|`i?k0wCM)Plr*iNHpKx2b~s9dPO6u%AZt zPuz6ApEg0xUxF8JkW4ItY-=ciPFT*csTmv`*0ASLIN7 zYhwMZ{IegwX`pFucFGV9f9<&CU}QhYkPi99*8f(&&+{m;?rBgN}wUV5M3$oRK zQG4u<34li5_+|Vo_=G87)F@e_bjpS39biXOVa>IB30CU1W|o1zfoH)JaMQ1gUc33l z#dI`Lsi5!rz3Rx|-AKO*5EB5FO(8a~cC8^@u- z+0hA;U(d9=TeB)3LFbm+zymxzL+>5ufCF@g-1!wAgD$-BE?-LePXzozuaUkobA(*ny^H)@=!Ohb5ve>t&s}K=7eV9;cm-T1D3IWp+@`#m~)&opx0Fc7sWhA zk&4ToW=&t>hfFw8nadn_v&eAIGrkZr8wu82i?l{&Q8xX~q5w3PBk&MdraaJ2Y9)Ji zrcQfEl(yD8WYQc*y`iQmR6ovoIi~H5hUw91#5e+(sa3O=3j4%uwLbm$nvQAuxHk8A zdIHf;e$hQ32#;=|*|6Yn1QhW5PZ9IuOWHUnWCP#vp>v4o@i|BU1Z^i!eEOt*1aMn< zXD%}iCP3}tt4-lm3>Oznc|%uHwj?x{LpimIJ-Q*D%z+QE#GSH8+PjgvVfwhxdsK?r zO2lV{7<_9zx(xmQFzI07xOx+KZ4A7j=5lOnC2Rn8?Z!mMtO}i4E9WB&N&X}eRw3cU z9X9~$T5_gJDjmdwFbIPqHU!>}3jF0`3UaT14-5KHz(^Z9G-c4yQUlXE!ze#8QWYxe z_D`tqX^{We!RddzSW-eOfo|(R`(?;;4g68aNExE$uNk)(w5$h5NV;p{)DJVWH6N0G zSja8DD!YH^7*qChJ0pGU|7Y1GGd)P!6-N8f5Ot`$J20tv#n{{<&6|08b6y)bJ2?Q{ z-z61(-7IH;-wLAP<=d;dt41w4ZKVvAqq^(y)YpxrExF=vDzz1W_W4>k`O(IK zbrnggx0<(Fx*v>Ggr;}f#*)<6yrR}r{g4o>{Whub`GVa+at1QE)S7)3LCX?*n2=IG zwp6q&hf5@-loEfQ8r@XZlD|Y_L=ri$f;;b>+^N0A(h^F^q(ry;nE4T0^6eO?xEuV( z+JX(GrKB?!Fl#wz`$qRLqu}l<&O;|Ir$Zeb=Jh3xH2W}3k3rK1Vtxe{eJtut zYCdH9zxw`>G{W;tZ_BY(U#3~WS6(0c9h-10T6t@H?7MKc3c9T>TfDisx&^WrNI1P# zkHslWw{5fiVE=0`eHRB+G01>Fy`z~@y0b&m*GK)tjyx8jG;8|W?v?aT%!)}rVlo;I z=#*@hg=+$FClq9J$=nG1{6E`%o1~RvjLe01BshsWNUosUL;JTre`D^upW||ycFb}) zzAG5slT8PB%VY4?AyAX&o8@Iyo^aV2$o9>OXQ$^P}yLSAmxLd|?1z z{fiV=6No#mB$(;uhT`VESxWpo8$)kF`!3lyc&NBg$S;6M(atZ1CR1?4yj4GPUl{$!7G9=)fdKle2L$HTN7r z{%NhUVMpqVCFcXc*HQ}QxRgFG4J!5Oke0I-yBJ7K_9>Gm2OW2(Nq{ioUZ;qkFMa4x z(bOqswtrr!H0Ga{{z2P^C<53#UwONvtXO|MHyY?Was2?p=2rqv7&})0Y?i(_L17{4 z2`OVA&+FS>3AMAso5P*;*M~E1kDf)A`nkXrW}{j=J~3qwv5s`N~hxQgBZZw z*ZFck<6>#&jL(P@ufrDn?Z{$7Sf zT&mLdxB}Q;`8d5no-pH7zLNL25I9il2*6;i`^E2ZIBUT}# z))y%)sqY!j&Am-$9gzNWBDL%3SwW_=k7soYshQ~Pt=Xk#vNbcEvpuKu4o~CJ%stG~ zQ|U%Eov||m$S<0VdrPmT$3DYoT5%>7b5qi3BWb`vQ=KGO8GyU!h{kf&fr)z)@6DXM zGB<1MK4Gs6H#6vjl3*^G6NXPmzBToll=H-)96oR;wKg+Qc;bO0+?TBJ|MP$6wSh8n zsacvlPdJML9M1eT6OD}CFAujXtM>hUv)yYwMNl@~M^Mv>-xQ(>L>R=j>g6OaX|M?YQK!8}0 zk8P$`Dzg@!U~;q`S9mT!_*#l54@<~apPbS*{*sg_Nz0x_FhvN63~wcIQh$GxCQCGfa3Drjd;;8O5F%EW{v%$LY)*S)J)7Qind z=&NCxXxrU@m}#PSGQt0ae?n69woHP{e>s>=1}QHi)ypK_w$wk=Z(Fc0gcv?3jSSk6 zjb4T)K)6$iUWeq3`@mvAy6A`!(?~9t5*yx*!~*uKHx>DEN42^-(b|LHfrj!TPRT|_ zvGn86f$@}DNsfZIfURb9rUUw4q@l_{+$9^{L8T53FNpt4aJeY!-Ogs`JNbYq8Iq?i zG11i7!oBcZ^0Jvg|Mjc0c;8!|SVjKDjU0)iW>wUQ%~WlDT6__CIH?BGapqS5dzg(j z722CcJ;RDvc)_3Tw5I?Ma(IzdsC5=-ZYnUwT_%g}dh~$Ns=<0<>=n8sX5#2{E%3|~pg`3kv3)?|IEg>d` zOasOW+1aG6Ysq&eqwI9yua&tXx8y8Ra*++h!bCLtn+Y*9KLQF;Nhphz%9 zb_WvpSEksuSG5o|Zq0|l&p+`>96{6_HBRmLb5Q$3%Y~|4FSf~bhBpmC&L(|zDLN>IY*OA)9f|FZ8pD0MdKOE9WTD5=w; zxX4VdM~07+*_({~$2&Rs`q|Ir3hPU0T*Yc#6lLlt;nRq+G2^$wqV*{1O^J)7vJFQC z`GUD8qztM%y@ehhWJt8U~ep zM(Z?8ES|c1jzj7Mb&h7A^ov!$zSxdW>TJ>1(U?gEq@9TTSoy;8Sx|7Lv}-?+@}0iF zla|U>l6+|l*@MK}UF_vma9$S*lx^)U9XfTS{}djWJ_Am4$9{egL7KbgYKqDcOAwYe zf2B7ltqdw3$Sx(%9o=;;F!VdigfCcfTcX(n%{>30Qkb#4&Qb3;?d_99;9PL{#q%q= zHVJlB0Lo`nwa;|BU7H9?pUdUs9$k&ien7mA zRMxGl=J-iqBB++!A^4l2ybEs*xMlY=IGSAuVJ(W8@9Nraj4?O;^>0e`V|74Ne+7vY z*;k{Tyk6Im!d|T@A-`lstR98Z|6_Qo+TQ1&h#^>C#C%KF`n7YlP(S)xT0W59miX#B zIuXn~Czl|Nx)gJQP=r{e^s~u6Ofvm*2o-0I>WT-1xhQPDuB&Ih;TG)utHN0Wd8Y!O zor3;QwTZ-Vl`iTYcm!a?;qvR_hR%G=K$oM|0i&cLRsZCH(NNG{>ef1kNXoi&MesXn z0>38-|1T)#{6FV~ncek{1}9fv^n7R6W@K0xpFW&XnY^JXx9bv-z-nES!FW-Kr-ll7 zsp;cs*1y;)(SH6S7i4YJle?pZ4TCHmXvB8FQkf9nGb7GV!RJ!;q+5AdXO`t7Mk&*sP?;9 z@&P6)HHMKVZdxpsf~X^{bQJ9eFZ@KWm7ZVl7&6+ZpT61CS_RK+mV-J+)01+V%s&(z zK6RKtVTR7c40;c#%o@&a{BKf8g-Wtt{3h$cjoBNp*AAjx;I`Yc>kx?!*d#CfuBt!3 zQkVyHg@Ldgmh_@waOpFUFJ>a~l?6GbFyL5Fz)6D6F)(lj4{a+7pku%VhyUeb?-zbK zI1I^*F*6T6R8}r$bwrHs59Dy09>_J6-MS{tFF52Xoa9mhTa2%zBRHh9=T4HKHc7Pp z$A4&!Olq5BaiY>YuARO6q#GXcwmoi8wlUf)^w~p2h1x!2=5jx|G1i6G|&_ zvo_-=a!dtCUv+*su{bZ!hNpL;(mVFjexdZ30m0>zohHi6`0SsE3V0Bf9Ou)%=msvk z@nT?`E+^1*=Hu032uIK~+{veVaDse=U-&a6nYL0>HYdc0UV$n-A$OCvliSG|5MB~r z_53DID>%H0mt|V&K3z+Umg8y}WE}PJ?wau++CA`safF*ame;0;>yDK)7x1JYFQxhrB_TbqN__F)D&Gv1~)_qfBd5)(Gu zrVCY8K)JG;-w`Zkr{@PEWvfvpdaz7Z&Qly2K2{$V_>eZ0%qE@LErY!$CdJy8RtK>S zA;M=8Yg3)G9gz;B2?=o7Em1)}7{upg{(XgzZ%Tk$-j3qqwbcBB%sL})(3))*1!=Pz zWSREAkK=Ghzk|viF8p+Q^I&z}F+_8zHZc*axJ%jD*+a<9{qGFE#1g>JH=ySL2L#x< zYj@~aP3XH{mDT4p6Q0>2GkQ+UiB)TwvBCvvPak7bDc_1f>rs3HRPt1uo3{@q^3twe zCgvo-UxW1k;;VUg2aT1z{`23J2YXrt;L~s9a`)ruN!e>H>Odlxzix1L#wM880tMVJ zo+K&D{vA#7A6_S==(!)AABL2*pijZ7GFf>-0)w{b0qjDrPoQaOaiABf+v?6%BH1aI zKDE)Baox4eCLDu~H8Wr1pJA;>OKp)qR3rP{Anwy<2V`k>|41TzTd#x6Zn0@_Wy)}f zQGSQE$nsm)wwWsnQJr{D%2cpBhwJ6ka&h`KS@G=$nJlFwg`E7dse}KI&qR3^A)THM zru8uJjCy$8ghf8@U|?Q8b+NU_8jr6!?0uQk$JPeRkjxtxeJ_tXd0nqSF|T4=e;L)w z>n8Ncy{5V6m8{*dyo~DSjERaYLOSCBB)Vc5o|h7^ULyzNMm1oVY65>-eN{aoPu0X0 zixyXf!A27O+TUf3-?rq)ww;|?HWU*kCD;2(opscT0^qioT-0Ro{29O2ZTswwjY{KS zIFc2zdfg)9p71aidA+X?V3uoFxr`(L(eU~@Ec0r9@c*~PSJ-X*f*^%L7__R0!0tAF zLU6tpU%zVVt7-Xm%05?@EWSC$6}&9>)@63ERNlJT%75@}7vP|)=RG~k>8t^9>VYu5G^r)IJam~Vn7B5av9L4N z$r8uy+QM7p8?WXEGoeg*JzbD^0(VbiCc$*U86L<(rR4s0ax&!9A&*&USM6KR?%Zsa z0JFFLI$PHRvoHVgTVE~#B!1~9SPDD4H(T>gmCS6A@ecd6Mz4lNUTdj0l;L0hZ7DHq7xVFx%*fm`<-CIlHotZG?^09kI8cpqQbb@X z=2=OgO+}kCJkPk=PD9?_d%)!XM%G)uX6(#jN*~EWmUDuNLhO{lCt{@c=Fz_Y<+C2| z79^b;)6wKA1Yc+!?T6@HiSq)-@n7XH!iVf3(@*5Rq7;b@cR9Q>VtZ0!y-@{CyU_DkufR#*!IB`8~8c zspK9<`1hA2(*1q+51Oc)5`^RX@i;Uy)Hwn#c>e#nUmTuBI9Emlv4{5Z$@1*bNIM_u zjQ-=eud>$Rh=VbuhpS)EP&U#_8@novx(Cy-6NhlZx?vohFpbpjUF#Q=TYNjzV*2n5n% z$S2CL!9Tr^M2u4Ou5&Ui-<6?_V&i09-i2;BR~URMW4}AU3BO@jpWnf!9azDSlBIfu zx7Htu=V`FlX{$c;StOllen)d-YLHM`x~(LVxWC;bet$a-On5pm8z z)FXkURBj8IFI`BqUrZCxRfg$XImII`d0{K ziif{PzL3-Iwf`|qJ#Rhq)c?eyJ4RiHYNL!T7zn$mrG3wHeCVWKy$ zQxVLP3Kq+rdteURb>&}>UP3gbS2QhmQuV5~*?fv0)I4`@A0z$`U?<+>`KER3gQ|Ov zX^KH>;@KTdLzT1V^NbDPpS#c(cer_cwyT78X;orsXp+&35d68097*RynnLxi|L`in z#~%pi;jYCVi{iZtjpyHljHA{OdLIj@#N4*FRDoa6hi9MLY~GkZLJG{F3vO2c z%XSvNCIxcnqPtZ<y>$D7+8=!Wbq3{QJnPFP>M3QVCD(>9>_Sk*B3!!e64o^$~@QhB){g9k95q5|%= z9uSlEZ#Ln~CTePYAEUhlqohr5_7Zr{>z^U<(MK~PE6o>4yT4z~Ke(DXKfW#KZZmf= zKJd?{i8@syFAEYfbPz+K0^Sd8 z6;t+aHiesEYO)?Mn^grr1jT{~*!|gSrlImkvDluvtXdcWoW1H*}Ox=ax5rx0CY7%;%V+6u7bc z+%#cF&B<3qziYo0^k=XobFt?@T<{#p+(}cFKWk*CjWPYigmR(q%$e^f*=!B~r@;l+ z`X*^}0r=?hy$#=a>a?48{fTSOTKB)+%Ut%pyIE8Fk&9?`5#d%B6@4(I9hw*m6R zCVL=JOdV~o7oawXV)tjk1jHt}U~&AI4%2Yx)JNsb?!g~&!|{< z!rff7>foslyhq^9N*$@gxUpQtF0k!~PigI!drujlx1J}GXAp%sd!SP0EPM+wA%uXG zun%(0dU1F%r#bkY^D2SVc|^?m=ctL0my=wZL=e5?BaChQ=&*v5^9Bu~-$1TfwBr*_ z@k0P!UY%yKP@@Ak3gnmayIX$H+;~A4CCFz8_FRzKw8<1aJ&~dN}1|`?)Q&+zyFaYIr?at zytMovVYYtibt<4c`!RHdxpuR+_=8Ch?)8QI{66~SMl0)o=85*E^Mv6Pm1GK zq-n}#b`T)bll{KtHQn&a8^jclRqFRwclsS- z_W#XRe-T(I`ZNm{h*g8?!eh0U$*~<6C|-II0GpNN13?2`u>rBPI(OFfeutsEe+o(V zxq%6#Wxo>GziC6+U%A&fo3g)>Df=t=v6eg>u;gyZq?Gtuf3|QSk+kmip{rJT7MCxs zGHwYJlkk~<`g*S=XLAOr#Qk%$mF;B(>k9sdF99t=+No4SoPP)wldcWj0}T322b4dy zWM{3^!+A+(ifsh6P}$|%b&nTvb3s(jQ!mV)2(g(V9EUuSACsjn)tZzsSLj=CkTrFV z*Rgd3T=q`MmJRo;%%fpkp0o`fRffUki(l4Unw`Bl1IbJJr_@S9HcGj5CHK*vn4(%# zQGOM~!4vW~-Wl2lhG6V#OYUs2Qf4x&g%8=P6}x@v#Z0f_$&0J-zO^*JAna z09%Q27J&Bn0?MCq*xkUtX6(`rp6}M&lKC;|nnbR0L>>^gF9SFTyC5Q0wc>NUpU5jA zSO5Al)sEDe;mhZQd1JT)=4F-j44-6m5sJ_xh2+-=^_Gb9QC1!fg)Q$4XN0YNQbW;0 zeV(_`pGg2cZ$op-Y{FMQe1p2Bnhj|)BfI)SWqZoN_fAq|zwX3uaDW-Ib|}-&QKa7* z?w#x1O9kgc`_tryYACpS)>KN^=O?vE`Ay&XGWx&LKyBHQ7)2?4JpX6ZysKl+fNsak z@m*P!Ml&(I9gh&XyOc+UN_TWGkLj^4K%DvWLkY0Wy6)NBWZvCmPoDa6xKFO_Q(YuKww^8{>7FJ4SnsFuK6+E%xE(!0K01CT`UV1I4^5}t znT@QP^0BkwwO!+^NOGrAw|}g%ODSuRMn=7nXlY-8Rgl%i6aaZ8NAk`O>T#i`aHluE z)Yb7Zzq9#vLe#SR$;`O0_ntAxgjVDHXz`J;s;gJHfYJ&T23nQ|5P`!UZoPO%lMCX zlu8eYBf^$@ZV{+R81^Nv|}^WQs?owX(1laKrR;8JG#rTBJq#USeiQCSg1 z1yw=z(}ZDgS9=Ei@W)vWp3By*Osy`6yZ+kJk~>q^dL6Bj<0y$!7*=0WSR9P8z@?^l zLt{O+BX<5WkN@zpQ+vtEx}5jes}%k4`4z!&96oW-6KD93et{>T1tz~w0f4?-kN(w7 z;9WvdjhHp5<=;d_>El`RQvk`qN!xnweu^O3JZak~`6+>90j27Q)WxRx6~ksdhD!c! z3qBpimwL?kYckPX!haj;IQP@U3rmDIYlU{9n~k2O*qFFb;a8U5=;Ij*g(9jU_MhWG zdll?+#sdcgcmL+}5TN+VkSTvn29itscf%6$evD{gso(}K)C=9Lbh%tkM5(U9$0Gy^ z0lg)s0FSoDN6un*1&*k<0Wvdkg9E^pn&K@KkSjA}RJs3S zix9N%4v(82Fz+FzrBvT+8Z&FdnrTYa#%;(9Z4J9N`rx|78tc>JU*nmkimVYF#>#>i zQk3M+En}XxOdM2U1AF-Mo5nP4*aSe(cG2OJ$c+H{imwfs@^ao%{}e7^-H(RrRaJVu zk6VZkFrlMBh&G7@f0A(M9c;c3S-l6m1>Qjr@Af5gK|%MpRj{5h)RSGf{dG7NQsG$zN~=9DX+s#t%DHgLicEaAft0f8y`oihTit z7;0*`ZXO|swZvd4a-FipLkzQ9grKJ!7v8Ed#X3wldt&AA93w&Y+Q>W4b`Gb6+>gz1 z_E!2Q;hl3ry@4Ejhln#=Ad|V@_oU**lw!E(%(1)q;xy)W!i2Nl@FTLc5WM8|2sH8w zII?a1lCaLs)Ty7um~K&8A|G(q=PG*3?B;*;0g>|n&G=BQkWP10l0K&TM!Ry_k}t4u z)mmKtVo|ygxSaRv;DjGz>!liQMhXcx%6d5#d9WN}j!pH!yAUB-4TQJ_z2nasBRGAC zeCACnX|CJZ(^1`k^<>N1x|sO$tjUxrfEYev0!r9A^3elVsfg{zfP8Mn>BS@+Cf~*+ z%~>8vj2<;dz#?pwh9XSO3~>wp$ey=E;R3QI(7PVb%9=Ry33Kip^J(Y_^(P5+RboS+ zfiSe;Ic`KgTSeXwIv?}<-+*%Mo5Czu!k=6q(}OX?dOIqj6NcLFO}gZX!Aw1r8Gon` z+t#?MqxY^`vM%BDttYB(Plbi)a}Y53pqQ`xI&&2GZKeV}q0Tp+VTyVlV&V6t{|K5ml5PX*0kv{(av%+*9sMrnNRUS z?zYR17x~0fYhpKldd^)k>%aDMr`;tVSYP?`Z1#kb7nQJoNTFB^GD#qNIz1@=E0~P( zz&i5nHmw@8jS9y^%wWFP0!Vj*#&?DoNKiLNySyfK;^W2}OxK{?<)BlOJ*LZj(iNIn z+Sp6Ya#K7psQgyyGt5Q}+d;;jQ*gA3zf4}^PX$5WqT+O6)SlE*2YF^FcXfLbDDxrq zq4AtNksEk;tjeC)G37#3dfm<3BBz>sA`+UMTU(AM{h)Wd^4F}b-E== z5#3C)`{lf+4VUZm1rAr>qOK6gQ$e0f#KSqhgj6Vc@0RJ1sNrE*Yx4=WH!#b#gI(JMJ zN9HBjiOM6Rk}vmHLP{Y1>!L->G4*p7vyZZ&F#Upr8JGw6%1y;s>Jk(`V8^$XJNWkO zSczI!p&zIdrA5R2qRiV~rTpI8jEhls8{!8yUZqG83`DaOzM_f}E>4v5t6Qfx8M?cr zn7B`R$31q;Ao*FU*PX8!0@rJx65kg{~ObMK_AnsIC4de zv|1BOPf@4+BIF+il*QP5OpS=Usbwnao@J}XWH>^HJcd6_pv5Iqc-KFs5=is@e-Q#7 z7c{DQ$h(Dvk#9&kly}n!v?U(4&wUj{8^cBd@5IM?Hb*8>9Ooj@-%tUeEW*zilun%@p@q1nh)eQl|+DEja9 z%`?1DUor_(7Z4#Xx~|5E$g-h>h+|L{6QWoev2GyV2@?lfj?_wo zD@1qeM{V;~Ys89)et44BUS_a?1a)zA#vqiv607Iaq*nb-bgENE7>?@AqDBCDal%Y=wIFeM%M{c-&hC|`G>JZy;Rsi7QSbOijs2wE zad??x#rWmajEQeQo8V2b`&Jxp{o76<{g3=jo5lriyW~+>Fu+jmA=i^q1we59N{$; z{QPsUBEJqCAKW~-F%=eH+2$NpO@MtL^*E(;5PFd%vHvt zFo5Cm3{$dz0@5w<{7MKspirg8+Zi*cRtX|i7p$rh#U2H|1Fq1NnC6s+Scd6h3gpE-;-%eoy+FF2BG!-U6t)c z;u^m>2 z7rlGVM99_6{9Ftsgpp8AQD0M5n~zd59XJlXR=5qR?ZOn+A;(GnLB ztL>{tO69l@_R)Q#y&ab1(oh!a>uZgFHPVDioOyY|3tD4?1d#Hu%h;;v^7L;WBF#8e%6=JBOR1MOE_K**rxO1lyJ>F0rh?{K@mq?Gw0-DeIRP{!A!b2pB zs5CXFdKZz={Odir(;oVhou|sAjW2f4*&gW z;Z8@C=IfR$;^M@?g>92YM!HO5#GYSOldP#96i%k~jL;zb5#ad!SL+rc@iD_30NaiJM#7G02 zhz`w0e8FP;e2~>=!iZIsUBD>@QeFe7+6H#=i(RRy-K*=fUWN(E&*O~n4*)xd4j=NA z-Z`HWxJ*wqbWF8H$J|)DxHv2HSLHa{s$(oZFVdL{-8k0d$URL6B|^W7JsS)e>!re~ zap%6k{+Jk8p}HwF%IZ~(o?4M{8O?v+qdP4so$FkUGLt5O6n0Lv$Hd-Tq$)1W3j0+z zro7j-BxTPG!D}eYdrj$VDMO&j)U4Wcane&XrbOR|59;M{TNFuY{P87Cm)U863|;od1YB! z1k;iRy34UO46P=6;C1@FE@s5}^`Ys%y1ni}t!qkO<{bmKW0 z;%|0!KS2b##Xiuzc0^k77ClsGez)N$M7Tl323Wr_ziV8f6WJGX67UOhy}Mmv0oe@? z8DU$WSJ=2#E;W~sW&s6luo2;GUPVaTeG}8IZ%hsxJOo|T&e6e=fCYO)+%7?vfZvP? z-bq1jP^AsL#rtm*rdu}LCu(Hd(TH$s#EbX_Xq?ycXaNf%#QvjP+qT>V*@m-qwxue< z^Z2tkD&xpv-kYh*6grKK^kT%0LWElbTI?aHe`B7c?+Uq4F?J@gY;?Acw3y=e7VHWt z)b9iTO9r1LHJ@`J4zWa92gTE1bOaYCHhF${aVnnE(gk;zQ5S@m{tO_MWTuxd4- zA0iv`JaR&I8Ns=>-1(sf)3ST)hM~K&{Vb&&S4B5EneY;V`Z6eT{#s`J8N=lOb44&t zSf}t2(DEgqx|zs-!|s^|lvSpgXfoR5bc8lQmaq0#*mMhV;Sp-ZxAI(cty3CpS=}`+2l&d)K-Onr8!LXHS%zN^ub(qSWgD5QsVy?* z=KpJLbB*_@3#Ox85PsvBg%A@hS8k7B=%QBL=?0caZ00R}-&=I+;7Ey|BNFc*N;CYr zVWyj!kXb49B=1}P3m@`J&BD}y^#fVaHSIvxxkd*dn8oMtz<#tqUt=zivt@s!KO^)) zrV24OQm6LCXx%UlIsgN$D`b??vZ36(NZLX|WA1Pm;YX!Ho%cOMqel*lmAmx;Oy8(c z{>I=DCVW(1DOKY;cjsa%Z0Ztx?{m+*V-Gy~Z}7TxLXsIW~UJOu!wj_Lt?W{SaES2nEIx ziotEr+2E+P@FMS77cJFfXQZqG@A8}1nRK!?#L?DipsvrxIhmbsk(x37?J{OEcp~g? zi3MZexzT`!E1NJMkYRbj0D(8Dl0eGCJjjDQsEuAo!G#KS8C~)sUas~Wq+5b@_N?1J zBJK$Zonk3J-E8oo2))gR^$m_%exjHF|h!A7~k&|Q;;za}SHJY+xW5^TSN-K-F za_>4m^Pje9MXZPQufG=cwRx^-!6>;bnknHY21d%!ff5Oz9FYw;ZiRqG))F-@3Q{{v+B}*w=W)YDQ&Y%;O zEIFO{Kv2%cM85xuCUQO${i5T`=bYIBm0fwSlt;i#3?U+Sb;rqBGt0~owm3v`vc$ezp+h;o-_EjFEa*x4jsN05)ak=afM&$t)tqIdPftK1nU zrunD%qvZHLFHJeZEo@oxhil@&xuQAXe6;ZwesT+c>7nXoXB$Z?#bZ3g!zQ=23B$+~ zm|M0Wl?ob8p3eYZ4B;U@zL{8Y;9YX(%BT6A+|?kDA-?E#3F}&^EHr*o0|9^1Z&9&j z!|*WuLyK>8KO(S$yC3WTcRZM@PA?f$Dr&|iZ%GC0I411aGFdYE1iv4{c(lspZcCVj zcN;6dP$8lW>H!`>Yp)=w!@@|NPa&B^9XuT5^#g+dzD83fRvdmew^LKe=-QbOAr4CM zTO&)P3oG$~JHVS$dw^s+GK`e^WIl)=`!P|D{g`1W7!tK`Hh6FQwC*K+!FVxbfraRU zEr?<*;i5Ks#&k)YFCimvBW|Z=tDKn@7! z_q;?_Glz{iR~sDgcf>m>vKIwQ#%p5O9}@#Bn!Y>Sbi}l3$L)+22i&E1u3h9jE~KY? z+f5aAq+nT)BkK8iGTwc{`eCo4kCaK45d2RE94w2)LIHH=CVixA+?@xCJD}DdxM}ED z=3Ki%_U!sNpq*+Q zbPLz57!T1Z+7iRKH|?T#9pUvz0MjfnC~5V1Yamt}a<^~*c|eB0r@d-vQ;8Y|H(CF8 zAh1}r=#a5d9T33pd5E&@B{o*QD+^LQ#zQ>Blh#lys&edd0GceIAtwF}9Kmw`0(l;8 zz~X%|QvB(T*$K^xx;mjOeoqzY(Oyeiz-xQC;9ngEK$&`$?{u4UK`8XK<50S^b9@~LZ0C}5cO-wY%Gdr{VvIO`WyLMUJD%he zs+N)@5k1&-v94y zh%q3ZzhPA>oo3Ll-L^cdNWD3D$+BcuRxLhxjo43g#9fM9`IOH>=u#F|76C-KaTPjx z(5^!5lep$GNz~rklqsVCiFF^%2)ALzX{S1}q&Hn(pDe1G@BG(>4?<{9eMzCo=~Pu> z^8YO#BnMr*E9*VGYPt;NPUdvZ{?0Mx&(OA&+WItey1JW*<<9bN>^E#1JLuSgGF@es zI5oq@09RYUkRZhhYK}FH$XpF=INf>pb30Ht&5D+f+W61%L{!H>^3(THdR>fnU3Bl? zDs-V0e*~Mr5sS_N$|^IO7!nZJ9<9)P-gbOQe33?f*s-Duab~4B;70$1(o~*^3XE14 znlO;|s@Dgq5!8BR0BMR-Kv1^gErk8BqKgp;4N0y}FvZ#RHpH+Sji| zit_JXvtSLc^{R!BA)M}`4aq#r;SWu*PSDLU;gt#D7X59ra2({w@9>IuEa*eTT_(*1 zs<2NK_=pd70#moc_K6xv78nhG=QKlEr2xO{pJ*Anb5Qg2V)9C<>chx}H?LSa?Xo-> z^c}V%MU#MrWmLt)UrH=5yu_F`swYBHh>A|moH7o!fY1oB?rB5z9hp&hR;pIyXZeR` zn<`CyPwc)w{Z3MJv^$wStO3C+cB&+8blQSyvEVeZIEE<8pprkw5s#p3y8kedk1say%Ah;bI&bRBz$<`Ws6h{b}n(#ls(4U<7+eHH>Zm8lFpvkh+O?2 z7CZfpXbvyV>C)QUw>ysClg)|Q(9eMI2ABKR99W(c-}3>SjrTDi$3H&Q3JW^!zgf$A zmMhqLosj+ z*eAua7j4`DJgq66n!G9$o~C#I&WQ60hsTNpbzDMPlNasSxqd*L>F`^{>rHS~@}$&~ zh>UH1YZi}{(*U`Iv>^;#x@~K}fF%d44=zidlp;q;HZ<+>>t6QqBaGD{67A_5eznG- zPk<5FTyu;5g`=xp9#PH)GO4@$_`b~64jE@xHnXYQlN;WEvKL)=$yn{%H z>1mi?ova18>2T^{E-qwI0877b$GBq;pCE&~!tI$Etc{GcUAwU#tA1o$P$J)y<vY)hElcB5oMiY zudgXL*FQk(zCm+wKe!d%C(B^UOgv!@TO`vPkCM41qsWzi;>` zKy%q0E_86#a_;>Ew~;h_tx(=MJlvF(<7;k6s7p6RIy&)*!gpGS$L{LkoKl0t?~)2Jbra(p-M03}(IoiT z6>Z>r&`{^eX6iC)V?;OxHxn=dXF4$N1?K59k~ubx9_XQK@to#irmY#8U@_zvQrQ{F zpfD=m|E)y}l@QV6yZqg4R`i#cQf~<@nPRQb1Q9(61G~CBMyO?AhWv?#3Rzo_pO!@6 z*%2Mpi-|r+0Q2=3{tvT$%1&ghiUBiZz@9*{ug%5VVd__39EoEQr{bYaWo9N+Z%uZp zNg;qG5HAfWsN&%xg$fAkab1491dzhgV8I{e0>G&Vtb{tA)JsgjfLYU>c?(IckqP=I zgz3mp=uE2_{#X>JQ^COPe=dW0p+(*(Kks8 zzAPQq4dafciD0b*-!$It{ND(yg5M{S-0pfdQ@!e&k}~(e+NR z`(XJ1=}m4fFNzRDW&HN=KHsSWjaWs3SuMi=zal**srZZS9SFp@7~Jp@toU(oZNOGI z!E^OeV{p&}0`UqOjH};kHw?b<|3_1>swMQdm<6aQL{hdW5KO0h0AF1{;z~9cMY1C#O7S_V6AEMl>X)T4^Sy+FIV?Y$Y6N z&}`~swQv^VdI*CC%HkQQ#SCQ_iv5y>>?1;`g^(V^@D&7*TKW16I@ZGEpkgtb8y4f) z^0ulIDpYPkXeZIc&kzAaDxtPv^q@o)OPr0J#>HkLMmWfSr%|wxfdsQZ#;Ishx^5TbHTttrT~sk~zCVe*iIn zhbbrd#Z@BwUN(@!lciAP>ZD{?Y9a`jwL-xZ@B>fYq*Q&Lo;xTd!5Jo8r zTdqV(fYV2U*Ye>Th~t&*w<%*>stm@nTQZ9_Al|}qSMqBn$Z%tC& z+kh#B+^{?zQ@&b{DR$*x!d@XO5Mj;oZGx6N4OrRoN0a3D)?%{dn+2<`bzq$3?+fOg z(bAg6Q_Fb4!LY&~rx$agX29uPemg3EK_sNDYlU-=m@P$JB?k4NGwj-dHeMGQOj&DB z8xzmEa9#c_>fz-VCDz5{itnkgC0;K;ZQ4VdI zU2q)8C8hGRh)qey8GS`gbNCQhE!@Vn;SA5U8w&4=Elwf`-k=Ykb%27^Efd zbb<({$|60iR7d#1a>l#oM7-I5T=qkvjCT!o*K&39ODJN96tNXI^Atc*@jt-R21 z)iKO*a9L_R=XBx3w^JU1@zhlwz&9R_lf!1p8PaNA+kE*I`xzB?KsII#0c50JomSb#m z&a0jwJoWF6o5&-uRxG7U%-hrd7UXiaA|Cbk*{0G`rMe(Nmm?~6EH6iNh@usr>6YttvJF+a>|@*)vepCFxSY{%N0*x443@5;4SrCe+o zYpR)*{VXxXBtmla3D}IL9c|aKvrJ95EJAkm3DTMRcC5XTooy0m77%(_KtL7{@Ut=< zefq%)F~8OW@@Pz({EixY{c04Cj;==N3!VdQc3yJ)WHpEb}0GsPigr zvNSCb;KLsO>Ev^{63@IKw3eA5mS)bDf&8>(w^0ROm?YgkxGs-jn==f7?f8Pl%(1sOGwea+G^WWq6g=__Z;&y_`4;~56fDKk{NoV<8FW~67&fvvAb%7W6@=kOF;Pqq zKdk_9EQW*kN0TUbX>e!=s;9urH;@j;ZG()_92~GCj9dU`DTHJLmOmaplt6hn?vH_O z9s-LxIsQcaF%a?@4Y%9(&=#R(CEJUyG@@#9r!BMd(kL8i&ZE1O&Zo9UeG@VAv28R51}#YzTs5qPTgG z+)IGh%g~WJCS?UKVre={^Rf%a!SYZ6sF$U~-3}q4N*$BajSg;#X+JL?1FRGd26ux* zGQwf{VWN@XK7R-Y6WxTP@`tf8lEnI10z?SzP#;)-L>z{?(ctHBk${Q$?_!mO&_9k7 z)S0w2f_wy75%RD3AMz|DUH-c?Sqb#N`XrnSXM*yEBvup76}J-2@scFUIFpei#qfW+ ze~}zGWBCsQC#jlv4sIox6C^mmH}_~n1WcPA-|=4=u#&4Dt z*55h5^}dMORsd9+=Jg70Sio=`17YrVOqriH;{7npv033^Ey3_MeOM?0Fbq02D9p-J zA`$|Jegq8Ib{DkHV6|;6Xo0bga|50ARyoW>%J;oL3--9S0)fu_wpzcAs?JRx$er4w z+qZD0rzN0VMVE6QfHCesp>c00=h3y?hh&Ub(NR8-dOU*j-kFD%SjQiud(Nz}1b92A z-T7sk03Su8@pxmfe}CE^BC0r^-kvU9(g)P&#y-|g&NdA6cc2asUey*T`XG>^SP$g8z7G1Cy&-03);k zaM5K>c*;wNh?iSN4RC*W_l+*GZkPUD6SoGEz7fns-#2qY<}AbRX1t;R%dl!6RK|Tj zNNL=eMx9s5_~C1-S5xZwlO->5WGTKii!^iqDM+i~1NTYFWm3)#`;HxXEy7tU1gL$c zcro9Cjgb1DpXH23BwtB>s%b47YIoZZ2#Ylw3zlG6jX6u@?kSjEjF&J=;Nn5f299oC zks70u(D3- zE?V6VmT*v^u0`<2rF}({3@E~AWMEYM-W&jGrCtQX#`~p4DQ_W|F;XVp0Zlwm% zaxWKw*vHN-t8i6EA5bq* zC!A`0SDPMGlpc(tDW{l3-B;wo@3oo0!_Z*P0u6K&+e?g(4#^I7%lV@mTmmI>Y**oD^jth9iIhrYcmU zUyu=DJGv7n#goq6+|vj-ThmX3Gb231==D>cQyTPGQjwF_$co z(X}u|bP)Y@)_6wCO%%8EI~ApoY$I2UqGRT5GxXDo4R36e4;lc3MgL2R3rHYDw@olb zA?PGtnyG8eaIYjxUjln8_sI~oTb}|v^b>WcpSQ+n|P4K3!tLdmw;LQQZZ=cvDY+wsGh-jtUpz5qrC>7Wo0R7Astd$5v z0uIKkjm~hN*l7h&AY3-4E&<4c*m}4Gy|K!}bi~88RG_^zc{!EZT}ID!Ym7e2W+L$v zAjviQp;H7OX`^4srnp?)p$!m#hH{U>I%iiPgwdLZxuo*l=i}POO|bDAK@`^8+U> zsAf2v6sH;oma+->MH-lLws1f-4lKDtP59(UR3nhcwq6+>cIo`6GL7>}^C4XVLy9WnLq+169BRbIum5Kn7$8sVA87pN|3Ezg~ZSp|hBk zb!cI=exN{Dct{$~9dsHscdhT?gZjSw8HLM!ow2hvqdJG~TMP7Xvr4{m!N3CZRi0!q z;}-5g^}BVEt5)eNcKFuF?b28D`d3bhGPlz{rFS;Uy(nNV^YIs(I0~S~td}|V3?8Qb z*f9h8zB79N{$`B$K-2!Uw}07-aNGmA`~fcf1;E4|uDuOR*uNGKGKa1zeCV5p?pwp@ zfHC-yobq3Y5jcAid*~SXGu5LX$&q5DdlyS-(#8*YhQQ|IJ8A$wOrA2WG#zJe)7NF!iG_2zOmNl{fhIj<)-+ik(7;n`>3!Pli4=7 zqTCL%lkLVbu51j4>5|L4Ft{;*i91_+5dMhbL?CUnnTw2vdQX?*wdB54leAexVK zW2OgpU98tAjwTFM4!O*Gb5>#MIioQ4Z_m!3t*eSYHFy5pY4ukxY3ja~D8?=uW=0^o z=aKWSG@|DYkqry>qlT*aP@B#4cn!8+{-V00v> zXYVw}md*{SKeoSO;sx$M)*Mo3PcIWnKWxFhkSVUED>;bC}t?E;#h zv7y4Ij$<7R73Fp{D{ksCj_lJW^r&3%6df`wHb&(M_)hG$v18IgW`S*TsYKJimI>&7 zzBO9Y;vO(g*=6ueKq|vBXn=+h8!_fDcZ{p@C#7zS`V;*~ElD6*yA28<62Opc+d?oB zIYhQ?I~YPBLLuAN2Aj3S1P;ic^S}f)Pef;ML;zncz}y}wI$7wC|ei5pEIP@9d#AE0cb7=&p4ftt0u#T-(hn4a~2y{8z|W!q?*-*% zYS^qyU9LGx$6{w`ayi^IOpuDlX*J!={*;3e6WU0=T=TMF%%HU7cquAFoz+L}~swkJunA<2(ESQN=NGQIyiZ!fYmS){{2l0I^cXh z2;CU#kgZS`plh)0 z(XY{wxIQ8l&jTQ%b@_^I>ALH>O50*RE^cWER#9!0x~X6TUpF5U8{eeX(VLZZq|Q@7 zb-knBilP5{3K95_A0v%qkZWQm^kk#BM&k9j!^)rij&ljfch^W4^lC}+p_-3160f88 zDeHm@E&+}(?4T^)W~lX$jXyD#KXGmh_cRCn9_6K zt2LD?&Lr7Mk@l=VTSnbwKqzw_g2ljQGlXU^Ahg*Ge~Co$%n*tp;6$kb++;WEx{+yk zx2(BmW|fykJ=|wBE7h3HPK9UXro!yxRAUa8L&ITwxXF_-TRcWg72cIc`i)rv$hGJi zHY-)vsbjI9`{!^tL`+bKP1A$)rw(^25V)bQ%Ya2E0ShGNt6{)N_{1~8rOS1K&tKA<*WfhlY&`f72AT#m$&Hcmn)p)0PJ&v)XF_y81C;YpBU19rU?775$$2S}sd-fp znl9qtRRV|ex!HZN;m>Vvr;B=~J~v-d02e^nJN5R-5hQ);#Fv+9eQ+ zwM1O|^I~xdYpTy72{_fvQx)Osr@~ocKzCBMHy|3*6l*^CNCR2SB_ef+D1`|moI=9~ zT9i1TGiNCabnmtlV1H>RbH4C?*is>ru~d*2AdGGLsd0XO>d>963N6jB+|2@TQ1&^` ztz|Q*%M&)&FHg`gm$F+Ev!$*!l;=-VoKR5acIdFojX-%U8v$hcN?ifF)Wq%G56=WV z%=YmgbaleUO)ER9jsD!t2yj<+O2z{2n%ZUDH2N~mT3YVr@l|6i7A?ltN4qr8q7DW+ zb7rzm_a0{g3_g`>mu51S@@s!y!cPFe${MU+g8@vbu4wuq;Kd8>8m?$&(#a(A3TjL2 zL&Ne|4P|+paYYbt!5WWkE%GrgqT~`SnNp@nmxf{vn9|dwj?VX>h$*N zfWQtf@6PcRtHUe7f7%)!@h$W%Z=xIM^@}aGI1OZh^eJzm8EEy33T?3@ij7rh zwX!HAYpf*>I^rQzq2M78p=PkVY8Gc<*uZpSo=k`}5}dy}g@2f@wemj0ls9ykZ9$XZ;Mog!<1l52 zYKk+$#yBd)7zZ0oacYY9c1C)Qchp)|+BRTcLy9jxQxY5it;)~sDFr-t&12?$fGJNX zCYCXrMIp;ZlY#8Dm7$&cLFX_T4Fi}_$86;S&zU-ne~7QK@IJwm*ECbS2{FdgXvTQN zWQteQe2y^E8-1c0S!qW`NZxd2fhy*}g>pf+& z<~>Z@np)k(f$Gu>pecVDqj7s;1T$+X;+C)7#zkma$DnB61bPSc@AB`MK5i&R{0 z$L96Zv98<2@_K>!D%stbAk7)EAkfrUG;u1QH=c+U-z-kuDC9|^+t~WnLWP0R$dHA* zh4NIjita>*KLsDr)E0y=t*I8!De_BOv9%ZL5)rRFz$K{ul-t#dIKOrY3$G9CJj?gi z8gDo==FifZzK}ml=a)_^KXpmgDw^Idk&w_7^~xQ5h6siwTIlXXdS|3*5Oq(mF0YsF zhWo?9uROx=3W}(hx3(dsi&s%>kZwqw*uy(6p{C0h&Go0oU9FRrUpXxyK`^a5k;3Q- zwuC_u5O830WdzzB-?wnrP}Q6Xyt^PyEmN^!{XRX+HtuQ4ATK;im)ST=>%`JP%iPmO zh>Dp-vqJ;Sp@-&zijb`8lv{q$fjV$k9c005iZeR1pvcF*Z-wjW8h~GGw{1z|3F_dT zyJ`_WZ&TWKajBVw!H_yeRbl`%016W9R z5q^*gis|0C%Kw#n1#u#bR-k_mzru4E5@2aM#bXZm`t1M;EzPt8WqC6R$lKv}X@A z)L7(fx1;%9$)3T)8#xbeUXmT16iGzz-FRZ;00Jfcp0Q)B=znAQXG1$x9U-y|s>;Yj zA`m&*LMNk%-GKMk-pc!~3w&fe74i24jXf;{>LTxE9DBUt9Gi7FTHoQyWX6uSjTss# zP=BAA_lxn0a?g~z6ko_%%K{7U$Wd#80OvfKlHcPk z@>zxJG@}IZQJ$=*c4yt;1YE!9y0EziDopJ}4dFAyiRv)|q}>>&52#pIprU4nPi9l7 zc2-^%m11LCn9x6?B2Gs=>u^-(OC&t|e$wY4cMaYX=HH+Y(TP%9mCr0wmPXmRANSj; zgURZb=`7i&B^sa(f*heDl3Sf@*p)-*0}iMPn{OHgD;tZWttrlUu>;o;bM>hI=_pq& z6QBmZg@;ys1(m9umM|t_P!ZUgb;Y z=_#8l8;Z#U;z2Gfl8J=OLOL{LKRP?>;+TTYoW*<{9$h<=DIh+XRA?t34a%|r@qL>^ zL!VgNqrdBXZ!)&YVWr%(y$cz^8o0L5JEh z8i@oXq`^9@{smy`oNmTVM;MPu4=Wn)i6Jfy3{0PcVg2O)U3N z(-!!6`@MbUOqvBv0&AY|qdukYGKppc%`^(dK!qFdGTwWy^tpjvbE%B2x0^+$pn0{w z7C{~7zgsSRSq(aqwfoxV|GGYtD}2k&eNnCw-`Y10*#&6YPjt-KnmT4`k=P zMSZ7N>CEKvV|Yxs2Y|l_wh)GwU^{gq1?;;OuSmAKI7 z;d1^Qz#Gmnbc+S8_nL~_Aw1B8E?S%;x#Yy2Zvb*Zo+jzRD;F2AI+jS#;WV5oe#S~w z=sS{2%K!}~acd7R3U(X=3w@HLery!-WC3b&m_y5OE%^+cp*m5S+E{Dt(D;Xrh4n}P zQ!Ft$U#t4*H6d|F^?dLAry^c6$}6PXcXJ?WRH?0aCbD1y+rS$peC)#2m{Mf}8bE(E z(n??2Zcn5&J|+EMD7Eg_{-MB3e|0jPyUmMjPm;q}?3mIfwE1Hc_Ie82iXvHPDwy>n_TX z>LS&x3gene5fpwvWmxlCkAO|NGx*U_4&+AxXr$hj#E}$P2f5HffXfKl$)WfF{mP2P zjAW+&=UC`pz9!zGMP`wasWYi$8%y2q5Yg6n=Gfd3!`x*|!5G!SzimKA;_C|Ig!kJC z^kh!(GxlwM2DGZIIvNn>3;W83%8*k2|5~4`==;@5kn)c5D>mhT3j=N@Vn1w0Y;J@) z@NTp;`QM942ECN9O`6Lw$(YyNNE{8P`246d2G6LOH-W^*5_CK`8Y;;J$@oodp;h(hbsv}*M|1itWgUonYpdqm0kHf8Qu-ZBCJSkDBw}svY-60u}m$$&A z4%i6u;7873|D> z7ptEMwg315Y%6eVzX_d`Xha`7_M0TBRt0RB|*TCWud2_qdoKDNAmO6GS)z9W@?(1kbHFduAZD?ZyZDRIbh0R0Nc5LV7cEjtb`u2@)5ac0bBPpmG z7~I{)ANs}{Z?f^GnrbSj7tIC#0)%$KirH6QR1CXg5_f}JiRk@8JvZ=;H`T%;uSwiP z>yfdJu9*S3rIvfuN~_j7^!r9u`?0qt2S>P*-_X>BB*xBu*XvB zUB0P;hSqL6`n}J3zk>{n8-$e_wcD1qYx~BxLlZ#i)N^9cuw5fW8jbCaq(;-GjBhFr z2F)8up_3#X0}~5-a|{;`pMaR8r7dqI6#%$34YpPcScDsDx#9iW2onqIw)wV0IJvev z;^F1nemc;>4t01(I!TI(?KHA-^1D#dMI}z(|O*M_h;kST- zqS7wYm9BQJ>)qJRmU>#+dw`L#n>`uU8Gp=iVL1C_>Ns_hkKkW;X(43k58@^uIZ6uj z2RW*LshZx5W;WDtvo_L+jq~8mwrwZ&F3Z>)w&Stww9s~Luw6J#pA_?tyuUyCepB+f z74YtrD`Zi{#@=;Z-wmXS6z`S>Tehi9KI?98xjXjn$LLggRD4ef^c^I`JVAYP2a!-D z-YK1R-bI%UKnUKX_oiStv1N*3x$VbyrPgS7hu&bkPiF4LYO`;la1lHLVv~?jP&bXH zH=~)&YIbvQ@$k2xWDD7%O;QiZwmhPsq}u9*8UWJJZe5C=fpMFBn^{=dwjB-#=XTNV z_O!Qs?cZoiApt>A2C*HFBqXJFy0$a2a`L;7QZzE8Uc-}_V=2p`XjdWro--nH{*$Zvk@!JmeR6cGF+mY?G;&$$|U2qykTOaM$<67ru_Y40* z@3C)av}Lrs6|HO)wXw<8v^=z*A55JeU|P?hW3ZuN8$Py;TqYDDd~lyB{G18DXT*0R zC6aa#0Xo#K)C}e(G;P+rMax#S5Zg`3ZqdQgJ*14Ve9w_ZVX*hv`f$=Q*%!H*AB*pU z!-u{{#;j~+>>Mq%+^bevwPpp_aB|(ZaPP;G{j`5SZ+hWB0^g@I?@~l`Un3?Vxl^>z znf};WIT2+=u;N_=zN@{}M9{m5mWJjYSPxBf_4XVKGG)v3s+CrI-QT;@we)Cae*Xef zt=i0zW?@TIz0nj72iS%T%n@%n+57o?zMtP%3kWtvO>K{+HFBpz$eRn%_JtpR;vJB3 zggx#)8VN)s*})5Sh)^!1J6w)k5ht=Ml1uJIVNi68SaFmqK6<}O&-bfZLA}$}8J*c# zo!vQ|d(VSLp+wqUj1r}EyDX(#B>k+2-mh&NTG8q@J{sulc!W(dWE9j*6FLUwX3^~C zG`D%pCqN+~BP624pxWw^27o9uTbrVzXV`yL|II%^;Qb%`myv1D(eu5~i@ns#eZ)}^ zYoBtOnWfLUz{s{Qjql5@fY|pn`IG|!$H}#cY7#Ox&!&OS%ePrHyE)BmUh@g~p~Tz* zE#0z(wnCJ=f?LfaAhflcbiyM3Br3N5>itbzV*dmGl$6^4iTqbuX3weTd!ZM5sh9hR zqq1^NNXqvqrxg_U*_3m_O8dNAkXGK8X6wtYNUH2>@~P@kI|EbwYWU_na# zzV>%OP)1fnLb9V`a`HQw+9_l};F(|Od4#|ckc|okg~8#7O{r-t614>s(3oAOD_!kc z*SoQsE%opOeJpO@B}bSb752Qg7naTxcbbwZDJxKD6$T67@Eb-DLFJLCHpA7_x3pHR z+jP@*w=Fqg;trGS0Z~J9uRHZ-Z)e*(_8tfAqjS!<)E)6xg75pvCBdl@53dG@ z(2}n0x~}gAQbeTP(tFEnx3SxY?T-EXF**6G5dp|O*Q2*(GI=4HmpXefRdH3KM zq3inv{j&SIzhCvh9&BkyiV5!|dtex9dXGd#i9Fq(#<$#OVlVdBly67O8Jv2@KO&B_ zzr|Z#=^$K*Tp4U)gd|DkBS_LzG$84w`(`w=p@y5ak(O)_$u`Djuefa|*>uIu`4AeFCRw-_0f!fxGdy?6Wm{TLU} z3G63%sZ-K7sJvMHS^}Df?WLU~I?~%Yrjc$=Xzu}U@@8-GR&SGiPC@gyk!LE9dHNlN zGlHi|&*pI*%rTw1Pucv3cAE8VGWEV2G|E@7ThOXd(e9u-yQ{mqr+f9uS87PHk{-T~ zplpu~>yu8&SH92Stcs)Z`+;d#*s7tpuokqiMJ*=5CfkZmk2(fMnwEsTDKr%W6Kk^# z2N!P(Xkm+5+>(}(VNwCeDeih0HdN9uBPP=}!{R*azG!*r{mlHdeXaYau9?k9r$6RMIe`X&bjW#iCH8L;ijQ)=){KZv>38HlulqmaSSdG_g*qYs5tN z3BA4Se_RdrzUe^j*aU|+-Ga49B2%^sjn3F6ZMEG_yX`gLgOGp>HxY`&o2Dej(w#+e zx?;20x>S+XyOGvPQfYJsb6cJbaJUQ}Um)zLlTJJ99E9LadSf_2-V5!rWLLFn-O-;T z3A3ZuG2gbfLmYQvyN$<5r?#I)JJ7)nby&n{XLh{zP9W*5b5fR_-F7c9y@3cgQ~pe0+XrCX+DTMj{? z6BLN#wIU@a6>ZfNHAfY1b=GeIQeC=L1wii>D1dq@^#{YZap0^+(`i8J& zG4Vd;xP;_BMW607eYVf_`M%(yl=Qw*vajNrjI7TE<@WXcZpbU_TMPAVcNCTO{gemF zD)+~x+D|=GQ{T7HnxO#OKg_~3`@BUcHZuFvdSPxQrCHJ^Ob@ZFE@ zcCY(AF!a-}J!xrnKi6Ke<&wSHq*{>0qjV;}@>TI2>ae()`c5IOp}F%k)Nmt>HU`(y z-c;{RgHhDkTnewKy9<$`p8l>Z)KxV#gWZs(;W7GtnEPH>8oSvWY)#zm11aT_IVZflbZ?+qQ{?}Nr@Ma8@kmuO=HOrp};d2EAvgybL!;7zFgNG0VR zL`X$-Q#9R7v&}W{R0$%grhZQX+v$=PWR&1Lo01bm_<;~||JZ0mPycNgn z4{BZO+t9`a+Qcl0WfR46Y#6R zmM+($q^PxyqWA0e+}dtQXGeTfO*hkQbIspR(RHDux33U|>hD-e+`Yj{MDJJoxm9kd zJFPs*hDLj2#>OUQrqq^t)k>?@#%4A&dT;lx_kP-cf5zO4h2ZCMD6S)Z5(&Hqy-r(r=3m7i9vjj(TVRCbQsIhHh@0?*IvAR9Kpea*| ze^X;%{plkw8xe$-oiK~ME>NVl^JL#R2m`%BSlz0g?*(XZZ1{|r)Cl8IF9o5rpJjt3 zCA*5(c{@$wT8qF%+6Ye!1n!{~ZBY-g!V6<96J*}+#ljW?9V)YqBoQdsr_Wj($NMB3 zut1pjW2!hi*{1dfw2#*A69!Rm~HE)K*nD`amqxBj&*lG?&^gvS-Oc|m=wkM z-?--?uI>HxET4$*td|*0SYN)p##WG5i13Av>U9F04F16#P;0>FkDpv`?Kz_Z0!n_< zh)!}_(vNXyebrJ&8Qep%zI}FL7Qy&E3G(AtQ7gN9tqGEtMTHc*ylYhB2mN_;@<3d8 zrzsfyLF`bApmxy2v-a!BL}>Qv_T#l2;S;>3r4mHb?m(@}X`FHCV?zi7MMGhRGi0lk zJm1ts42oyQB$^J19OZ+xM;Q7d4|@t}GA3%URRrxci7KN!%GT1V`n&Q^f$v;2o5%&QGsAnXL+*J@X6Fvl&a}zNon5DOb6Y}!eslC& zF-~UVy3IFN%&P~k0V^907=oRb#wLn7``jF78%TOvyB~PeMB^9SR+$RNMUf5d*40uG zPfg7USM%(8-N)^1v!t9zdDm_DGn9_yu{?zb3iVs+`BRtxFejU9G+w#LruU2x)JpGU z`StBvudxqCW?mEJ!yQMmJ1OK>obxc4@i7;nXqZv7A)pJv7~Iqy0~d=g;NHO`0{f?)~i7ws!zYl*a=&fGw8r z2C*}B_wCPlsdGc{5=6^s*$wt53hG5W56J*VmyH6sR|1@4|67f!2Dn9T};M+I&=l{W-<$%ej znKo8|EhMlM&C?p;7nua(fnw8e!XHl5pe-hxiWsNhd%y#KcDfD%wNO*^!ZUAP_}}f6(e(c&cebncQg(0>$NGn*VWYSgmzMR|&BPm@ z`yKsMk+k}mWum9X-+M)@S?ut3Vb~qoc{V^l<1!Y%qALHh<9W+`J;gHd}0vrVqKF7UVVtg++_mWSQA7EDU z_?bd=TGIV`RmZ|oll{M~RL}LNn7!j*j`5ehS?=(+Yj;Uq^lOA}>o}$9dl%2WE+Fy` zQYQGY&!aS+g7I&7zV~}AKuG27tmqgKnam<4_0AK?ORpiKFlyth09qTyjH5em%fQf) zY4SUy9Psd!J`Ys?*p}bLVX9oe*?Qx6x6Wr#k55Y!u4x9be>Rv4gtK7jl0ZZ~&S6I6 zNrk7U*LFa+%!?Ye7Zo1Ei@vr;aC?_pOqPg;DV1z!6guZwJF5byyO<)Ae*Rmd!utD^ z<~gR<44KaMOWfGuhi3ZEmBhbtP>6rTxow1SR%*l!cGJ-ZD;)l*xuyzTOo?T~ z^6@?d$e6F3+&T7p~7Up>#`GbMx~Xh>jaFE)$?Z1gcupD3&~cOzyfl^!YizoW*WC z2Yik``(*}J;7C6Imfx;+jBDiabfKusOljir;c1lc#ub!iedv_h#)nu`Wxty(@#Y|k zud_Qe#;dYJmioB;;?Zh%-y(7Hnxl@POp&O{WjBGjpTnNJ0%yd=7_ts2xEbV3&qVr3 zYTc%x8JUIMRH%C)@s*ikFIm%9BkZ<8NgXh+{EmAqMv~Jlih5kHGg<>bJ;`tL+d4DaaHC>uyB*`vu)WD+yX(L#&^qnyG}3 zEH@2U4gOR$=h@j=3Xc8nqkbuULSYE$SC5%vz3sH2wiPFoPJu5iLps`d z=e~x8d<$;2mw>VkIT_Zve%zI83;7(88p7x?7zR8!E`JLCE_C04BreQz%WsQSejXU| zHSL3my$J#_rVc=K4|PKP`4P0Q93WcT|Th4Q{edxSxqa`DPLH7P0 zwTlfujHXQfx!9nzc{g*~VU#Q?j90*S7}KFG!sF%3XRTd=8LLxGM`dH`p@7}7AumD( z?7T)vyP{OC@gY$G^lwhsSqACxu_7p~b!Cl&!tF`*ba&P)AuVubmKOQi5RLS9$&yZi z_=%{dCnbqul|Y;}-s)-fiekB47*e#mbQ0fFhuomqE2M!GL4jIlytOxnO&)o4Igte9C!r$k_t|Ku)<~ zr@QJivXLx}i18}(gsjI-p|ppc;k$<~qtC6-Y{txACF`n#Bp*H2a;woqA`_6U$x?9* zv_a3wGI6cvEI%pNIr27Eky8I)s6aX3$+&PZ#vR9uO=E1S#m|lRom=U4hQLAeB9EKV z-h;s~X=8Mlq~z#58^Z_ek1IGbosKb@K&h4oA()H;1-jZE)q^!WZ}|DPQ)5cL+E{J}nJ>mR$ga>{jfqLhboP}LKH&Gz+>-l! zv&D;SRte2(b=Pi$$4wzmWb9L=vHcXApabuN_rii;E)YJ^Hn(wvAtB@LS!MWzCbvxR zn3mCXnD*O$5fpwR8LP6g%#}z5FdOfXspV>^6?&#pD03hqZfFR5{O9!)SXs;j`&zi% zxKzon@+O7=h0Q@M&zIk_UL3Qok_Cn2kA4~5f*eI%fyDCg(Qvh=h+c{2s4hx(E`qJ5 zd;QXAu}F$LV)|hW2P8N5rcA@Wswd<^CTi*aUTCx{sIwq8p--N&<>?Oj`)!2i8HlU``! z%Hke~Pv8v9*HMX`-OeBb(c!Q<;hE$lV7l7s;zDJ;;E(n zl~5yMjgDLo(c5Q-X0)2XFX%jJ{R1^X%CVsFiR{C<4!HsIBh;rlqZ(%YxeP!FMlU47 zE8$dK&RfTGWv@kXgDjVOQH62;s*d+p2V@Zta%6^SPV5)y?OA(h4Awx@uZ)b33#7goYmE1jcD+kl1RUd#-L+Wew> zrtaGS$M5UBY+f7SpfEOPD4B4Tbb-kpGX^KJvxG)!@s%=hoR(a&1}xOOCP8u_WEs78pMNAF$$Io{cQO1D+bC zbNvB{f}QRnszxOxXP*ewr_-)YR5&)7LQRaD4$WxmxP8i)V7D+OGUyx7SuNsjW*mYh4m+wmr1#=9uSlh0QPO?WQ#%$A#os%WMm@cK)X}4&tSp^P7W_(uM(U z*?~KU$8VPW*SLIbqpeER^sFgZk8hsPA3yAyO^bifyRtn8lh&0@3^o%~xo*LAbUfgd zc`Rfkp3RxmHt~;QVx9I!rB}%G*y5&J*q;w;eP*97^!zzr<(Ppsa&1W-gUd0P&!f9L zuAe;QDIT=&Lb>u60o6n`pkaSAxF&M5BCmqTC%6|wkXr$?H)99ZjEZ%%EqE&)U4G!W z6skd8fBTI6wG+yu>QLX+>9X}&tAepKpy3MLYz6Sg5YXNc0Y}kL6eH){k9KwukTLBm zng~xl#dicx>%5rAu{?-`nAphvQp)s)hP!euk zJ!abb#Yc3WWTct};`h_ySj6@5JDidD$>qZyi(F+6N8dtZuc~ z-ylkAnxzsA4>HRtECbnu{e%gp8>UT9sZOCMgL6=>ayz>UiD@-}?z#YW1q z%w^TU01~-hm4ok(-S$;BLlgHacJ3qRwB7b3kS3$3?cB~7 zX>5T(nrXEHWk~L97J|7Ge5Y-yx;)zQnRy{98aMq;0>c_L1@dt#`#22Yk+rtD^Wm8-q)UOM-8NO7jj1HtY+LF->V}^c#D+7CJGpWmSv7odu9< zSbLIn&1b!+&kB5=76Yod$Y{0Tz|IzV0k)@;BSR2GLAK~_uz}e6O{8f)?aBm-ZfZF8TJY- z@#4Yu&=nTiz#I1e$QQ}+271n~aYX%s_-!Mk<=^!H(+h?klsO?pX*Br8%v=-P7Z%o0 zSLqjSr$Z(9Kb_-7Jhiz@|M zP&xh<$1K@0M_Y$;53XJJdVX`gDnACW@oLr0!bz`&zDmqL6xn7I1s4&3{c4~7NxNVD z&J^K70U&J6e~r-*iO(`Sdh$chzWi}&8E}G#SOj#hQG@Y2{yJxCd{x2xZSLyFaF@t! zyG_ohE`TdPKflc5TA8exwIs-^WvL|T`4P&!X9{gb{a$a$uA@C9==#h;NsS$vz8l)d zWY%U$BXkCjaC)NHE7z+At&YznYFa-zI@LT|(55u`@!inGG0XDLs`y*4komwz0g30a zdFl_0oNUY->gH-{qKXP=U_53U4l~UtYV8lfvdmsNxe!}^nFhUkE|gkpJ?xSZj)|cv zxV8NzFSymFtRcDdY#t3>Lro96KC}>IGwf|Qd@gRx;@d_s0^R3qICb0g(A?9^*{--b zGjMCU3?NJnhMn|9*8o|*PhyTlL_7;i&9;1{B&v_32WXHJ0@Bz#*8ZpE)u>90o6ENa z9f;jt#7iePM}@JQgQd+IUYPq*HnV`R$H+)Jz=y_vyk`I9$-%z6 zF6{xVjA(F{!Sq^Gw)!X0Z0FKo<7hAs7hasIY)X#aB)Zqyj-K zd`L>(3|`ax9!chfXB)3>e9iQ<(XxL#XfifnSf3uYN`AX+bPT;qWWz1B6|aAmVyYYT ze&76OP9!Djuo!dWGWfiBDQcZ8#O*AV#Z(SyLAX%4tO=ZI!=k%fEOwsza?AN!>;zv5 z5I+G~?e7b<!d?M7s&rkRWQP&B+n@c_6rF+zQzlyL#GeYYYa$+1s%R}qo zPWW2vdkPBedD2R$?WCXh^5#t`sP*ID65^;##)|a*RkiSWH_y$?Zl_%*5pJk-Mp46@ zEaT;Sj?#(~mhXSk&qY2vB3Wj9(Zeb*`KBncoim_Uttf8&;@x9Bsf`zR(Gb2A@VGc z$(0Isj~U}%2nXCfNd2O-?hmWVeBEWwRSxGW-8x>U`yQh?vIIowJzf78FPCSgEj-*? zfZweRr~|Oq`Dko*WB2KYK-N{;=L`Ye!Zm>gkU&8H1+w~_Fxkr`Yuf5Up>ZL+#6{M0 zAt+3OI_aaB%C)y~tVg?YJJ#Cr+FLLhMX#X>{3D z9_0Bo{t#2G=&tM%zU6`-j*-dGC;OLr^(0q_*KiavKB9_X3ZhrpBGeuvqA}zp(R?Mrwp> zEKFwlDCjyN7o)V@DWqo2iPuf0?YEHY+?UWf#ge^X)msW2{Ck2L8qU zMA6jZx5|eBFG(UB?O(VrZ4t!qx*}mOVWkJT`?UFMXL^X!aJ4oWX6bm#{|@_3ozCdv zr~R|j;Cd(roq+doCNbg0M{K<&aJaF6Qi|d1F4$vWYwq52Ewx`GZgnRyxYKMLAt-GB z!BY^Y?a0`68tU?OMxBp~hW*xlqvX7dV7ZRnnxy*Z^PkBL-lYvb5VwPqf=cX3mM7t} zqV!LHfcPIZrU^<6`fE~xbUDlSF;>^xXp<&0xzVThT)%auQkfs7&p<7QRR3J3D?xV; z6r+^^ffl59_Mi6nym*u!s&?^k=oi}i-h-+t%xh}Q7i#cplTOR_dDoBhuaRb+k*Ac(U7wjf~KYoa!EJ1$M0DSuKvcYU#ld21_ zK^Thq6Wsxc?TCsR$m$XHbscM;1){V5>Yk6hH{J(-2==Xp-F~q&UorL5!Z+Gu-P^5` zZ-h9HJwtC7&s_U`htA)HzDq;BkfPtZPpEmcP}Hli)FJ5=1Zk4O_RgEUo(S=3E=?Y0 z2uw(%Oyf^c?{0CNqauMfbF-3qCNg8NsWF(RrZdRdU=)B;QL5fW!$Cm4NNFuucbrNy z1qtu};fdg|$8N$|H(xY0BN5V!jkxwOJF5&f=Yp~5`Z>edxuZAn;he5pyVeHv+E(tM z<|qTrgG~c$+J)KA3VlpdkXg9zm#`zg(=XX`2EGouhzXP686SJr8yz(up_&H*ZLw2F zt^!?5M?aG$NF#@D-N!_sm>5Jf@(CcCZ8}udutM>~-&d>R>6h!q3ITD6h zTfz@iM{Bi*`%<2YUDK%Ta0wmt`!moDC&NXxE)TXY{yI+|x$5VJ*+wQ~R`P`@X|kHPNpc8EXW zF|l$f2C+x5e-3b_bGwCR{L*Bi%Ba&Qf^8S99g}|Na7y_lu3zt z)Sk4;@@|T?MtI*^B$s9Yajs?TD0T)*p+P|`zVR%euLW%J`346DEDFzqbtpP06e$?! z+?DB6N15as=r)B_`KZKhaEH(-QgBO9jMKRjsK#@O^+C1P&Qli_pRG>5VmCTzE$;Xo z-#n)sy{v);h;xm_|Jr{PoxV?r@t?u_p=r-XVJOPvWZ9FAF>6_qNFJvzbTFq02L zswv}&{A(p<{BDSVm6=70dIw#f`V_g4cSkr75yp_ib4XnVk!!Hu*EkkW&}F7sEr06`xGM$C3D=9d41*fN6wMXTR=Uc zA5uL(`U&>4LJr#K%RP?TcrU^FjuxWy6;Oyk5}utIAK!Q$FBajropmGa;Co5xMvTg0 z!laJI;P{c6G@|JOyzf7O7AhJ4&OdaTOd*ASVnF`3EDR-f=yq8nQ0}3Z*n6xQkD2qz zBmEuyncn@eah=mt`W5f*#`zzf$-JMn($KZ}T{Dw3H0=H4&eSi2sDqL6A)6#CV|2Qt z;sl}=3WxX~J52M)L#Ji$>t!5q1na4C03I+@yj+WUQ^KqAbEZC@e>H&-AL6y!M4BBJ z(a2w5y=+4NQvanCNkJa+FX{CU?T|_|kCx0Lt}HCWoe|lE4Kv4f$5PTJI>I9{IRbIZ=B{9vDz!+UnFTE=i|1MS3(30-WcRC&SPG^9Lq_!h1~ z_WjO4I54wZDXnG4)r9Zn9f{a!dj(AC5`gC-AAf41c-HsHN>{M#?p!Ia}~>CGZF}fh~sK!TB%ju5ul?s%woRw z2zxbNjFS-r(Yf`Z(y7jxoKD%23R8R2Mi-x9=?ZGnt1RO_hHAs;86zS!O=^ z*2iBh*0patF1!zqQbN7kj|A|vR^+wqttTS?+QmeG8aB5Agl7ks8XOoLw(jH71r}C* zYxkl7^#T7WJ;1JtH6I`^m2D;Y64TeoB7qU=qm~o0w)K>=8k3DRy1H$}LEkzj)j`g> zZTUgTIwzIE3Zwg`dMG#@*DyueLymrs^mt#O^caf#^e)%7l3xj}!Lj>w%9!ZeouQL# z0s#WsDSfZ^bl#R26h3=kWm{zJnkXEbab`Bp#B(3TAFq!cfGF}a{Pm+&IM)$Pqc>^O z-rdjwQ@m#!7txA$%by*Hp!#m(XzR!!L)&Am-jwPmhZ*;tJBcGI$Y(W5TMZ@9lv z3SV2VilGrhba7TvEQC}wDS*Uw6vg)5i^aQFe4)vRPI9Ame{*@4uv0!9{jl=u5w&VbsMcO5qT0`C1&+d@*>{0JOW z>N}2S>C-EfDTLPrmqPOFpj(jcTk}I_l9yqqq&D+YuS3)d!bORsBVI5w?&LWY!&w~N zXVOcZuOt>+K{+A0xD;{p%6-xsuoqP!R0zQ#duOX5N7T#s&0S`>!QlH7WkZlD#J!UyrslDw_p@%yjQzj*)<5tqGLWY?T# zli`T^DXRR+!c3nQJi#y0x8C6;$zS|+PR`KLj+h|0?xK-eo_`2*%GLhUHIyZ@?dgVx zGjn#SC6rtlyC=I?pj~qI7Yx=T_1(??F&L3uDq75hR%Dk1UBmz*9oe^)-E|!X*IEj( zb$fzbdx11|w9xpx__S(`L8wFFRB!!8KtT>v&pspfT)i1a!(;7SE%YCKtl7X^U$@y< z&@`k&>!=Xs3?Z`90D??H^_Qh=l~tVpm#^ma*S8VDMc;%<)bnRD>D`l4Khe_c0Np>nnDTG=&iu=Y+iTOK^7RcWJ&1{Yx?;Z|$B z2;E-%SsWSFyHrV^=-XMU<9%-uP>lDn+vocWrL9SVopDM0$zjYWtlS{qvqPH zXjF6}y%G{OnKZ9e<z6j>sXu27Pc@!Us4x8fUg!T^>p~ z=e&Q0Gxz)C6S;CGlH8!>-Xv`Hy0aICNp2?f4hwk$ngi*C`43K3yZkONkCo*~5IGdd z=eh2rC&A~AkXNE^sMZFel9TDgMV<8}13m?D+?nRKq#EOR?5equRXu!PUkFF_YjP8! z@sCpJ>4G;&FIc!rz<2X9+u36#Kfn3#;I1J;2$&%aC&<77hjkl7L42rf(_+7pAa$1E z>$s`#U~>Hn1^;o0*S(L$=;Dhlj0W7Dq#^Qw_*=FK;=) z-H6{agpB}mh|y6eGW7T3^Ft|2_WL2?DviA(pU8C^qc{E$`JYIlQ5aP7cHp_ys%|xL zKGFSmpU&oiaty~paLO#tX`fD2_J+AT9b&IGG8|@#c1;=xyD}1co!+|oMHej>hMz4? zRCmq>Aq)FlxM^YxHV}xjf?<5Vm~XG#E6KTB2!wVM9MN|%GQTA!{zVmnwCI~VD55o7 zk0_aGpm^avXtED4r_2&hWr~o7Ud;$77XSNUw=f)csOog5`caoE9lMfKowiAFj%3nx zlN$_GrT@p?PG%qNQNnIO$zfMQNVgI3yR6zuoa+-At@P}7osKg;9#zD-aWZj-)Z#hN zhcalXFY3E;mxUK}>_B_pd-6`1RSU{%TUL$NxkB~47am`pi=4bEk=bf4dv9OA6(3eV z`ML+r6msWmrO^g#qf$<(aInOSzXagO3(5N8=PqIoj4_BKEXO=!&h)4WBdC0 zX@p&3VOatt+1r_y){U9yp(A8MKgPf3EH}gm5Xj9)5 zIrvug4S7&O``0PScdNl<16rRvA#%d3yGgq9QRb9}613OC8(+dwnH6`i>TkPYx<-`b z=>;1iwVc#&m~j+~y1qkxeRO+hA>NXTn|JGtPCz){wz;JNJzLrA9diwzoCy|xm=OnN zE9Pry3HDXLj*^}M8kWRP;m#tkksy8>?84na@1Q>EY}`;cmWov3ibC-E&Lw6am92rs z621v+GflIl69V42IE{6k$L;m~S_w4+UA_uv|JfPxGPi3e`kfO$Q1<`r-#zAghVmP^ zv*qa_>0cO|0SYGQcSK*=Uy}wtkTW{{)H|g?wTTL zhPwT#l0H-*S(?yxi zUG)A16C#w`^NK`q>_M}YkgFOWPAC!ktt@{JLMJ3$M6}NIPI-NC_AEspH=OYYSr6y( z6J&b$Rt7&LpO+4kiV{!bzKkFtWud5`n^ctl7(GvgBb71-=DU3EpC$mKXSe-OI`FB# znIe2cCI2KU^cs7Zb_6=;1J{hF{Aj#ePJ!|p@xh!+LE&J-x*_>@C%yslaXU;Q0dSt# zedzBS(7q_BvOa8ZOc?wrq5K!pp&-qeARFcQ79no*K0KKFmkm48^n<_;D~Pr z!5u2!?E@(>qqmPEHsZ#d?0Fj)m^lV1>t}z5UcL8{GsX(=qkvas?A^9q7v0x=rt0JK z@f=M`@)XiaD~o!VJSwNGB_6w4aN?b_JaL(P z6cxUR+@cVo*RNleo^t0~oE(i1udl;L6oYheD^O^xUolOHMD*3-Y#kwYAr1Fdu-}wQ z)>M<(*&FxUI(?0UekrAT`JRtM3w6#_?RDJP9f=8_Njsjg+<5)0)pAjL>T)&_lbrXX zzoPR!IS?wQ9-DAy`XA0R+NxuvE)#YI|65kt!HrR1ZY-7i+&oP+N90Fnm}i$FhmdB& z0*A<>1AQ`nZl=TJ2u6~*$cTh6@Rhq9=hI`Sl0?rmJEH3k$@}~(4c9vQ>W~x8xByw{ z)o9VlAdubzK;~(LUt?M2>#Axr#|-n{#7Ssi`{Bg7%0cj2G5&`6&iO$gh5$H6UYG~A z1=7j+UGcxUb9OVJ{YGBSf|$P8tO`-QXj{643`{M*T-Sa6o*=ebnV_~=mwWJimxKPY z4|@J`*N9Kdjj3=lRMhk5pxMT+^qK+Zl=X{~`bst#iFg1NTD<;})UDJ_yxga*b;b;r z4IU1l^C>Bv(S1H8HT#qe9db|dXTM;WY6c2KWMU=TpRujw{TxCEQpnO;4l7NVJlD`t zuM{-|`fTdItA9ei<70>Mu|rP#N^b#)Y7uyh2>WN92LFE)tRX`3F9pl zyUEPxg0QZZBLwsHf9#E()@@9LjLkCX7W|EX zF|m^mZ9iU%d|kCDJA?;VD#pd!Wl|6i<|DNi>rnB%Bs-zI$NR#*vR;GClB$D~!ho*m zNx+0N^y$LCpd*ul0z|aeCn(%jNS%xSBft?NL@_~kw4T)3`h4H~xE8l3K` zt!w|GjrP4omR6pAoUAETkrb}eSP1|<4mp=w_>3F;b!aSyAAcDH9lOL0&H0)KN!CU~ z6zPs~OAZa&w!MD#;@79gmUa+|CeI`!8rV5`?7#dk|1hfHV2|!x$Ea%<*ioMk1slj* zw>@ctCy&?;iZl?<;ViEkC%)VUMmK~@6os-Ml@c6}mNSW0bT5aNJG;+bpsQuMkH%$P z$y>)Z5Q}dqZ3a1^7LjYCEgn%AgD?NGElAe~^lXL%ih_zmngY^lNnu8)#qYII@S*tu z*3~hPV^#&t|AGCcqKPt@s^@>(S_Sd&>)ceb7fwG5Qmo_VG$S>~5I?}59&Quual7mV zd137Kb&sCrEBu<|XbB&~_Ei;)esiv!Kj{4!ESFXRJFPsI3T#Lub6!%ASB6`sk53jo zA^PLGI(pjcgJ=By5rkc}juLr@aRZaFgmJ1V!(tM7He=~i;Ld-614A&dm?OHb)(qoJ zE5;?4^fLF0Vh0akAclMRes$sv56$$KHn#l5xg`ZRatAOupKIhtU zZQq^w+D{_`8I8;P^RlHoUQ9uAw@fgWZFJ`=I1vtnc*@n10*=GCdBD@62RG3b-i%PC zbdO0_fvin7ZO9A=|8jO4WDVKtNuA#TNo(9tCKQNlDV>x+CnpO1H^x0!v-{sSbgo=M z#LBCW-lmWAd@-RTjVap~eOTx)!w*q#{7_O?UVPj6aRXEJm0?d?$5>tZZ9Sf9<@<>) z>+J0m&8$xqu)(5`&E^beubJ^TE{$KO&EWWxrXKpbsSSi-GX(|N^9c3EmkOK#n{0-cOZ29?k# zxEQl{YFN0vcWO*H>&H}99C^UHT7Z*4^oL!`bj!AF3Qn6H%jOSIiq($x?#_1fRb6%E z7JhmmRv%%(pCwZAU&`%)TgK??bg8Zxn#350p`_=XnCR`bD15M&78#V38@D6# z{s+faV@ScI4lgg!zu}%2^{;`csG>T99})_V!D5Lco!U87ReO4u5gjt^PP)3sK0iio zT;Oh8$!O4$f6&wbEh|hG%KhXx%I$3ccYtJhA`k&u-)uZX-V~#emRbEn$z}yH?J!!q z9OX@hgU8peezmw_xxFJE^m$$Q?!~i6zJO7&1Eqj?i|sJN$rX}~C|(MRfNLRglCP_C zw2t?qt}1eJhkp$I7#XJ~$dg2;N%0|sO8&`e;DOvp&bb(N=6YV3o?;2_EBgDyD{$e% zp+LvLTvwrj#Lnk=9Zzi1lpFsB zB&Qc&gERh{F9JNd#avI{+?yC_5{z^d^9{_+Vb`P<#{FNU$z3YH z!=|K}<70XW(8vMO1Om=fs&<+=FINX>>pBOP;4VXlb(P?dwPN1smj?mgv)TK4UIKpn z=WA=r3HG!MgBe8_zxR5;uhU(wd=LQ4VL$H4a9D_!GqkmXhEMZav70;w5R!di|9JA? zJ^elHyRDDg@Jm(ab(gzoL!YsqetvGp%c2P!q;%{dObqovdkEOY4{qhnyY9w&m3d@(Q+Wt*r>Uat-TyayflBMj7ay@;sFr5)E7s83!I$kT zupyRhf15VFI$C9#NPg;?gaK!EI2Z$O-NlTO#$`Sis8)o0eEkaU9M<<5g;h-W1qPaW;4_?55Y+VAtW$!vD; zS}!it3Pi6Z5q?B?w+{>-9dq&O>Lh^&uwmrM0h0?H_D#3c#UE(}u>wQ}JDP7SK}wW+ z!NNkXJ!z;Z)||D%qd;D~GMp$*Hln=*x5OB|v0*+{3ev8ur@8-*m)6Cl=B=KcfrLFE z^qa2i$eH2@FX>UBh2;Iz%A${t_q8d3mQ86CjvtW0!O@ui&1e{{t3_v_AW_-ZT=53i zTcxp<*2~K9#L&~}EG8d0;&C@8YD;&1k{V6q-?Fz%uyaYaOx%3_$sTm zZ9)^n(&SlQmWd31R8qh%FrQ{CdT^(+&Z8HNXQyp>z9%de6ZON6XR6>WoI^*VaU7wY>BCmK zY44~$#%<%Ap+0M>sOJ6MBj&e%qru7bnH|QsI^S!FPF0?cjgC1wD5Nj&i=+f13;^VP zF}K%Ko&X5*-}?IPg#$MA$(uJ2qJ#aPc%-$Jlit?LqkhlMYwwVRpAfP4 zjua1mS69Q>ynYWhQSPd(UL{;+HJ{5!2U(VA@7uomS?Zw9YTFHE-rWU!&+ zQ5D=M5v!?uewbD%XJq*F*X6faY#XucmKC(9yn6MDh}HkGKpO<7mi$DsWQ>X&V)@@v zg1<8|#mq803X?O`BX@Ei{nyr115gaHU5lP^pxYh97{R6v*Tk$7Rk4P<(m4EYrv%Ir z`SGK)Vaq)~1G(wx)m&Qa@{ub!4uAVr9}+gn)Z*H@v>nh0jJ zAx$&Pv(w7C+MmdS{u5T18>doe!15MEV`%Q$y>Cz&lbP!eP_rSv;ZhZhQI!4@G=>e! z9;mABCx2U!4s}c&kdI!LLYwH^{YamrL=C_I7;HN3b2D0eqq};c;x%7xfA15q!oL=P8kE;{9 zV7@qN*)aj1d?}!t)?3m8)LjI45v*I2_;NtyKt`FDxGp7!1zlq-6auYJKFH03K5rdN)T z*ev-&}0w4FM-e}W4Zy&YcKS@n2;!!gTJdO%%MK> z)K$xd6hV(Vqk=8Y7j4`8%`2VJ4icO7FbgiS`As~Bsu$nd+GmV2suScZhQs)ST?W-g zkDH_I9=>4Ip%7O)@aFni0wa$eZ9E48g6`RUD~irpuJw;0`p$H6Dbqtg7s+f_JP*2; zr9WiVekpe6NZPmj(_;#`QAN3Pf@$r@{K(1vMR413%cMpivQe^0CS)|1>@8HNZvk_; z_DO)$U6I_~`ON5YC=f4)%@G)-H0wJtV^F-J()h4I4>;&>xzc9!96TN&gINxyU2tA_Qy}S4sN^!tn+CwMj5T0 zy~z|C#LT=N_%bkUo7zdSyEEI!tx3NL?#0SgieM_g=;BXSuh4Nch%I{YVE&_RcR?Md z)}}&x)@y1J&GDAe9T9cf1#t(RPsI{FVAI130j<8W7C|m952anixB|&ZLqohmVm!;1 zvepZd>b^b5nH%1>$b((5HpT;dZ-RGswdXXHfYKh1$`k`FLY~uZ(_z(D$Y88nh5CEG zYfnHtGEdBwm%d0^;Mo20UG^SNm31tIi@qeh-X_E=^Cv0!ydpljs;@G_l()RZVkGZEc$9Y#B_>UfY?=Wv@=vHIzckh-{#%&`G=JlP0q-ttlFlYQRY~rAd2((e2Sx8(|MO;*o3=p;h$dX5lK9Dao`O^1er2)yyRr*CjMdHT zMPTha_x1{pv>$R)D@dqPjgL|x^X^g!Dqo3Y`}Zz4+h)seiNY}YL@5wtp@Y*DQe;-6x1DA`m=|x0&h$3Cn1;T^)jhpJZ=a~3pn|xW4lA>f zDsJ*J*WzLDyGo_`i%5XZ(_o8XaKxjS;RPKeFG(KSQq(6fL&3 z{F^H0Dm&aS%R+ntxo3uI|FHkW4~`ds!Fkb_)}XcS!}YEJnbl9ngv9;Y_|k)j->y1- z2LVm+DGK~QV{hILIqSILo_k|E7*Hb9W;HzM);} zJ<}~TrG};k?q=4OA4{{hn1}vr14EdHghah3qyT`&K7t~3S&3fxwP|6Bo_iU86i&{j zCr?EF*o^)&gQMNwEX48KR7%$illl*OZ>%tew2t#MoVCu5m~l%eHDDXSt}PCNwyw~JO0_giB}$Ogp-qVMs0_Y`_pUpQPI+Jebj_}y*r7M? zgAvcnB(`cCsZs7?L@yzoOx#BTfjDiWjY~=sII z2lvA}QJ}8Y8kwGuA=t#O2;I*)kz&E;?*I-g%U{^P$Om&w)cu_c({kgcs;5~EyCK@aU%H`*eaN4XfYOV8#|j(zy|V13kYeV6)NYW*Q-LNyvH3FbLT_Bf96=JUb~=OI6X!H52UI9^LGPeZ?dQmINWE6q3P|q#BX04$Eu=3tJdFp zv1f20-sg$1Z}Swo?^+#n=QsAsU^R42fb~;`Ccy9DsDNZmRL-CBhEv@MvEGr>YJBfu z{{7qSOv7Rfrq#HA0t$l^|L2!C0nc40=BpWz^{S84Kw@)Zx{FQ-sJ&` z3zpbr=sf=C87BYhnfG!-c@~5w>MWm{x+J*dI zHfrPu9J05IBMDaQ0En06zbDQDN=w+&F|Kr%OFJ=P&DnjMv+t9GC;puP(4_vk9cLLX zvbG2Dk%xjuJ~{huEp~h?ng`2s@vo5Rp1|I~nZS{NHm+Ku@|=>h@|sG*rr9%W@&5;y zKxeI01dXceeLhS{}*ie2O`(mM330{ z9unShBqXI~y7u{-k!8y5eCmP(K9J}4r~d2<6t-uW!x4K$uY1$m-u2!AiY6gZEjwed zTN&0W4T{@_iVkMh8{x+jI1l@O934sFBV`HP+L^bjGMwh~X|2$&Vm+sXg{SG~Z1uWt zAd|rmV)nUyUXLgztTYsVos%#8*o63TUJ*%=_D*38AS}P+js8wC5sSv; ze|-Sqdj3)vd;1kLWreN)qrw6rG!hn8Y~BfOmAlK zADX=3Yft~~b{7#?rAAa$WocVxSts>}kVtm`S}a()Dy%dZK`PLC-uG9@z$Cy_w_ zpYmNcRp4kFIF?)uH8mM|^^#Mq8k43vQm#o}j{%K1U?T6Jk6G2L-yk@UDnE%weDc}_ zF{Cc(D%+S@yeV^vO@3!_76U}?RxOz4%AA4vs82n6<2>}`7gFO8*1N2rp-1&6;126C zl}S3FY4wGUSSg|bp96cMHM9I25!h6wWZ~GH+RHjkGa4`?KQKfA6!X$4?ZT(nbZ=yX(N4 zyX;Zz>1x!oGxZoU1zYg*1sGM%-U0gp=O_ZlfjEU=vKCes)@x-&dFT(~t`Ki8 zbfsSMrnQp?H+iMWm)T=Ass+a#1zMdc%dMR#GeipHF&^NY)kChA`!c(Y9FLzWL9s|8 zrQ^<}+scS0JwgIEHHvbdOvgXMr89n_YZ}Q}l zr;q*1-qbm-uKGaE)1dIP7gE?M^ooH^K`?LRRureS&)ym0 ztl;UAVkih}dQZiv`mhu}4le}j0gn|56pVrw7&y7$KMXN-vM+4@k^u3mf<_{YG?K5G zpkHU&L7(@2iV;}+63Kp6vCTjB>IoP2ZQ=@!7cjjDjbHMG#H`cyMl8yTg)#<^3ac~&DagSVKff>9JrV*;@#Lq}lg|vK zSyakG7B>UjSD|E7Dbgb6_p?h+{`}MXP0YidHlMw4dYThvf9~tzc?O?tv2FCAUS--e zS^FjL*=DYalB&spLZL!clu{mrLZMKoqQp4W@G976?Re~CC5bm`MN3wHA{h#*)2vi$ zcK;nx4;xN6^?~>a4XvKED$?3SqtR$I8jUtx@zb0#yXni^ae)JkR&Ng6WZ3Ke|)UNg(tiTilS(NL#lk}mnzkzR2ftn7TLzYpa|b><>OWL`?goZdhH)oU$DC4 z6`nr|N_tl9!o-`k@`IOQo0p(mfa!-HCcdz%5T>+DRhc$143pL5z%UFeaLB@j<+Cy} z-C!7onH`!b7DM`n=<5G|p&N$put8BGqL~pDWm&AU3t}gt zq82T-nki-jQ=EB)4x%EW$7FeVb7xT?2!hXGpS=^ZkY~tdeVlS!LS(TZn5h)iCmt!Z z#ygUW@PB`E&x-%!vv9bhG`@o{nM)_`T13TtWLK-mkS55TPW8f&koJrd@*znBU@BJ+ zG+uF>m%>BwyfG>a>4<{UD0U$ zVi(GbCod@0a6q_A=bka@1h=(_r)bDaPZ>c%3Oj|Uj39_fb-1A9gdm7yCg4C2i3Ea_ z(+)(kzi_^H;;(ml2Yi#;1*ddE{C@0+#SPsIHY3MYU2)hMoxe)a9goQ&-=FQ0d)g_t zZZj023k^HymfW*;%{#S^$vOA3>3kg`erpVGxXLh^ zZ#+vJRHv9u-Rab+Oh%l>(|@wq(p=_u@{dC3e4(_VKb*wM@(Cp%<>o-vGM2r!k>3wt+Qz$}rL zny4ki@c3UF>r^XL#JZVpCb&a&xFa4fI!xvw-p!nY4*NhStAc8gsBbgWk9B4f87FFL zYO7n(MLnq$WOOVDr%E`H;RNE$RoMlxi^Jh?;VQ|+0nMC37lKPVS9GM9wRl2NU5Ax0 ztD5|9&1f=luHJS8-kWiD;Bay?F4~=Na}>~|sivUjk~j3ls@RDp%_>7dI|U_u#KhZ& z8~)Qdj=IWShw4QTDGF4mHt8JG+z25E3Thf;dZL+A=zt*o&XGxO2r!3A zX?gF4iwZF*5~<#&V9+tf1gwFo4%`hl>%w7_QFwGGo(ef22pa5eRfy141R_LGI>Imr z1OkCTCrND5ekjJ3`NQ5FGKg$q}TV{itbKBi*@G8wivs*8Csc)pzKYYUx zx9*DL@xdye+70jWifYG)hKuxJhr~oVwnrTfRJK^*0{uArAG!V3?;XIHuCKb*(I-EL4`S zJcrDJ*bR|PCPy}^$dgyH<(v$%0czC;AR)k1O8e{`V3r!xrw%(23u~fSSy^VQ?1GXT zsM!o#%m_PK3u~6`BlD;XtgOTz9`J4TIWox&0p?ICE$`iMQ6VNpBGvm84El_ih#g6# zi}-fc%{u8&9qx$7cM~Ra>B`*zE4z>Ea1|*TRbY=Q@KaGym8=gvt4@&GrSY(!zx>uk{qafAj(EJlC#N|R+HmWSg9%=-yf{WxMt@O=ACKv~C_vmq zys_x)7>wc_{56a5j{Ls~w=0*BdIZkwrnOz;b{tg5`TuI+cg%ip>w~%gU6+E>(syx*R1+v0$t7Rh`jeA7wTbnO0g#_KusTz-}MQ}2Rt?QbTn8}iSxT~ z-*d%;Etiem)N6VS_#=hF)82p8|Id*y{5=x7>Me&g-gEgwj`JJ32R+OaI>_N_7Lz@k zehVs}+qx8sh=pSLVu5%*kzEiwiDLv7&!%Ubi_Oi(2NyVCSi3%85+Zg=fPw0Y*m9j#K9El542+RA|lFTu+>y zCU?#){ey&r9F6*cU*yWKaxba;A^hwoU|LNX`gc;i^62C0nV#)X*5D}|zWo~}RL_~9px(BT6uowV< zz$r`CQP=?h5L6W12^Ut1T~vyiMk%;GfloLPr`K?LV=g*>jlZJL8DNm=eb$Z#1L;(8 zu*LDaom?N(j$KhHws0KTdUlmA@$)y5Z?Qu(*E`b+1KP^nv~Zc*KWx|h6JYTjqOZO)Eu8uU2Qdmk_f0j3Z;CBV>J)Ta*fh#2OkE2El>ESb5PT~Klp#mH#U zOsknpHcXkBSLndVgsf~B$=ncN4wcdidpBIfERhJBi%Qw>xDodnuM<=WcNg7Ee240A zM?AiRFqumy?gAK@eG*-*l2Ae?X*%gHPEB;08<{0>v(K(%ggUgxzwnP~zncm=gS+=f z*M9MRVxGb(2)+7R&^Cl4DvSnVMKLUT74g&J&)-vMJo|S#^BrXI9ZiV;3pbb|Xu2+r z?JK{1s;zMIN7mz??0$#Dbk|keo-+@+vp17^*Odp?!*uJHx`*@{59(`jSoqy|Xor3g z@SV-+duUB<-%9BCeu2rbaqu#v!f!$O^PPA8IT~X)b8i5noTV7_*3J2E&0X{j^JxbH z#7+q?G#7;p0ih=#NC5!Q7umK6xsg+-kfI2@+XR(dEl@BVwzM3dFdJ%8-~unuJQ|7Y7tD4Siki5arRz+o3Uy5d~e^uc9%>;KRh zT;{L~B>LZ82ImHIOqTs$l$!?%1r6gQDy2R4?zy6;e`#k<)`*6!i@%>KD8-Nei&(X_ z*vAP7QN zQD<)@K>P1ItzX1_NeIkW-l0;@eSS(ipNnc@ zAQ25)PwUAgS2D=WAi25V(NuOAQAL3kwr7vs@@u1e)UFRJiEi>c?y>Ec*R6 z!$kR|R@LQ~T9n`Q5b6O;iCv%Cw|y9I9s?O_G~A?WaCAdHea?JaA*rx8B9R28NdO2n z8~^}z07$V9g``~}nFQF$!@=|PQ%~3!&tZkZU@$alaxfS+aur_NL4L);U@#aOfz?0|1VO{toDyJQ zs+a4;4q&_}pkOqz;zd||hbKl18Wg!I=n~<2yiNuv-M zs!Z0jMM76X-2Vu=iu>-?OW52Z(@{q|jTEN;DQ4R|o3q{aWC`R1({4LeY#tt3u zD!nv^G~{550}qa0d6pF&^6Q}z6w9ljDRFcmar%Hr4?Tm5{UjWNJ08rl3ck8j9Q~+z zG>_N^{!*xRpHmVD&#N%_VftPIj8^c_20J{|BU_T-oozML*)`fAZXo}V}aFF_qFjdj~MHM9^GR z%0h0k0~jw7C>RY_ywI27SE*etb=wDouL=qx1O@pKlqZy|t4| zV~bz*`=#M~`ZVmXzHowq*qQh@GLL_e?JZrF!JH!(;nXy{^FD7Tt^fc4K)`?j03d*X zLl|;ate;G!9TKiR&2b=hN+70yj}LI73Ol+F6$u?tb9L8KOyxqwf;z#t?v z%`uT;*T6S84pAvB@7-`wp`AHdBO10YrsoTOK*SoaWvYa`+iWJ@p(7*;kLtjSB-fcr zCwZC&gneXJKPksdR#TO#TC;~}DwRropj4$&e_4O^cSSxC=FOWoZ(e#y=vBkPix)4w zX95o1yyHC$=CyvGbnw>eLOh$?jrX1sfA6czci=^)Ie$3~uuLEHMMpPGAI9nH>fT$6 z&dS2;!VCH8z5ZL@`oHAOQm1{^ZsAc-h*|2B>qr>|vr|+I;OFHFxgU}n0!*cz`~0-y z^OC_p!aCM3PRn3HtdJM1LvnM$E2ylXG=YsxTMY*r8ylg(Auko)SQK=jB$vQO_;#m> zYgxjutzj4sY#=MMnDUsR6vx>{!;{kNgxvzBp2Rj2>ZsX?gM-3Bp{UewP$(2ifrEp> zp`wr*2Zds{^W>FK8P+*+IZjQppX%GKf6vs{LkNP<5jvetr_%}8PCP!V5H#Qy?AZWa!gHzx z6b1kQ0BCU+7tjMFw;{Rs-+Q}~R7L!kf)IiP?-3mi){#G9*kP$&Rh!MFfVLIyx|hQ=kn){!$IW_a;Rs=KsO2G{I#KuVhB(k0HAS_8>Owtb;C;taEb&yJYKB^tb0)jJf%6{60te@bxfBxnQoe#_UPumaRrcVd0 z_Bk=gZz8AR$NwWZrpu$3ENk)j7cEQEAHpq-U$!ib9CSTU{k_wXiZ^=vi2E9dT|%Ncvc~3z{g;U7lG5OJ|}p`@##9RMBdseT&sI< zV%>4kO3_dGD^m3FyY2Ru{{LsfqTxeZMsYG1QJnszisOy>%=;0K^Y`cWq6yWpE+O{n zr_ymx)}qC&UY0XxN%7GbyJJ#w?;9TJkWf%W7F8*d5*q;q(tJFeme&y!8Yh6-f6QATCJ9&@aQhORFQYng|?>or&g5J20B~y zsYuuOm#+GM8DO*emu45mn$;dV&W{R2L_`*~TCG;AuTV}qENYu^42lS*Yxanzn z95^~R9-*WjQ;OaC!_qb%m9WKxQ)r5!26y&(!sW%Oq-r4{_ZS22@+a8dq`hT($wg5V zl%n3E7Qm;Hst=t~45E5}!!hFc;Tv&0ZLKEm^*u_?>)l9vZZfdvYz3NxL zRp(AP8LzoN;$Cc?)mT_@SGjRG8FsO?G~AOdu|5BIn;HxnL&>7aEpI2o^2FxdLK=Kt-P|3;d_@a<}Px9i{9JWF5xj*~?c!K8nj z|4r<=rA?~Ie0-d8Hg}kWgZI&S_92z+9}W?XO3Fj$ZU-J{8l!E=KgJKh3ft@si4Rr- zp2m9Gi})p4@ST!(leby7=l^k#(K#Nx-K*6WM@@K)^Rx?)=7(P}o#f73{R(W|!@%f= z9G7TavLb5j^z;;mvuM1dwL0fMJL}zTr3bv-@bH2MdU%$eq1*_7r7uda{YAd_Sh|?x zxj4b@v_!vxzr~>-M3P4(-DgUL;qjw-5)?!@lnRWenax#41K?#Zs69(X^2Sl2i%xc| z8-N8i1_@-u=cM>KRY!SSfD!qI8S_AnWdmHKOmLpd!}p)n+ql^gp-})JM}iu*f6E{K zFlVA>75cpzYb)B#BS9dkS210T+!|voI%+9`rmP0U4WEcD#Z!Y?N{|pZv@^aFF9!Zw zY^6~}XLnH@HJVq38UQ((tZ^B`kS85bFE9cL08E7vRGpVNswO<|ZSM%~y;CNPKM22w z-yGZve;Ak>gqUCq%h^-m#y#}RR3IMlh?n6|jm1()C(lV>p+M!^A!%?3rbe4cwNu&u zCVWlCr-jp~?S(AFFU&F6Km6s<@i|rc_Cs~p^0(0!jxQcT+x99Ag*|7lG!0BCGDVw5 z4UvzYTwQ=`Tx?o0cSDA&(NwcB$hTwcmSSG5#33N+f|``{P@ss`=g$RDo#@EJ+CD(; z1_=k6i!VI;B_933N&K66{qaO{;Tg|4em&SH+|(D7!YRCZWf#s#$cS*ib*}vR;PZ`h z|Id5=`>Nsq{>Fq7QSZ6MYQ1^n`;3{`5WnJ` zqrVRlKGTqV{@r)VHeNFdOU%=~j(>i?e{**V)g<`nX(<%ajrGji!eH=lw+1Wqq=tXN z@u9t84GXWY?h5#LOyg#PWa*>y`3lGn@6t?v%wO;!zovphTYA&SS)*S({!xqrKPI>@ znuzWmhZqbm&bMjffAO{h{R#Yif5`9Wi(te+Uj*@x-}Q0vlIs790BZ%?yxt_Efto;T z80)#S?_Ra&m&SQ*K$EbScG&M?xaU*I1oNT2n35zs@xs|;Giv>b;ilzu%Z=s`(EimQx0b=;G}M3LKDpyp|JwHsKzp{kntS}c zez7m6`-}f$N;7iZ7+Qfq6-lQdhB5iU`!IMeZ1uO#tUsR?S%`uG!yVpIZJOpB z(}+g&KbTbg(Eax)qFtxH!};f$Uo+h%Kij-S%`f4<@?Yj3Jx$`n-(mROW^F-aWq;l}T)uU?ZYOL$O z7lY^DlXd=DE)1HZN8&j1GK~M4H?3c+Z(y*UP-pcO?sZs_Q6(9>dqy|b^~YrlJ_Qx$ zA2lUPFh&z76j9NcrLY};7$$UYKl;!^iF#M_pv*uIUqa6&z$d04Bcs1WHsvP<}yyK|@aX3c5bYjf)P?%fu}ZKzm&Q`-KU$lMIBte=fap5a`kh$p(fAFk z4l9o{P4lluj`86w+);X~YeJ5i{2Gzn_{Xq8EeW|ml#JZu%ALoHL>(_52=eI9C3T{! zxi|O2RIJr9=PmXwPNgI>H8se|98_{`yLF*expT>%B83Ke>`rDXlb>i_Wz9j)UM${J znY^kt`~i-XlNwgx-<<(G9d7oR;c``Af;a-KcJ_>F_B8?ltKUviHa_oHAoq0f$(|Folo;Ge6vT;B|jl$Dxzd{Nk%Mr$r!*kiJj) zDkW}G{XA6kRg}lQX6^sWt&=ZD#{0hp?=<=f{2z8+k$=x~{*rgRv^E zPOqJP6Eoe%*W}}9{qk%}^LkVbK15^1&`Hl+SnSQt$Jp%6yw=#?T2zr^uA+ZOM0VZE zJ6brr9lG{n^f26X+#&58?e}fV;4W*|RZs|Z3PXmSYo`4kFciGDaQ`Zhmk`w-LT6JKVdXb%*a z=bKz@axIf`JTvs#I9?jL@_#&B-ujQvAiSf`@%C~Nl`mpi6uEM78*l3=5-A{O?%t7O zd>c$jJm<)s&`N{Sjq=B{@8@gW2Tnl0@SWY=h^Ihv-2#AA^oZb<1(7XgZ*>!l0XnaU zOJ&bVuyp;v#~dtSxJoe&(qnFk@sNzG>b+nYXPrhpu&{}7Zq|&O^c>_TuTAn2v#88S z@g=lFL%*c-(=eVa{jW(;=D}~5IK=MGn-2DO;kTFh_O7$(-kuBJQGfo8X#Yr$0EU$V z^lamml9$Va8!^;7v~^UQP#HEau;!;n(w zJJ8?0s66n?jTgF$Vkm9RmcKErRn&jSnKO)fT_w1vg{FGi7Z#px)P2>^-xP(JG10vJ zkE%v1EU}`KUck9N zI;~m#>E;EA@HN4s6$hA)+R?yBkie$EU=$6`C>gzGoR!F>U~jO$yC;mA#Z;SoP)loi7(e?~QO)hQwUF7;QhL3~Z}bv@RovtljOMH003# zInIP(WJwAxr`vCwz$P81tQY7=!NN*7PG8S-^KmML;Q^US2d6CF2=exX;EneeSQ30a z-G_xCQs%nXtZoG)k%X>v!ku4VdHtYsUXO22_*M9W*?iDljyTLESl+R4{1~Y&Jt<%c zykD_)Z{fp#_zzCY2Or~^E(i=9%+puD!Ghqz5F#;Rd6I^2w?Vn^hYuQ&3+`ylBh8LS zm4Q3J72J=XDjK$7@ERQdkYho}rm3H|eaFY6UV1)l3AR3UrjR312eHO){BFj2$7A)e zaIKuAk4cE5>8~e|#*vMbjC5>sOQvk=MOsQs2@0XKZons|`uY2ehaTTM2SDOgfxeJ~ z?BSOhM66lDl_7{fv{ zXkU)54f{m=2x#716`b6hg=7GWF`sKXErEGMo(= z@;Fs)O{MI%@suG>A_cwxD&)ZsoF+_2#PEC*OKjah?0Fg!kf2|T`%|3CzZjEzlz>=x za1?uFq=XZYuO148v=q@AxUP%fr7PdI#ZKKDrDrWHvzkrRTdjz8V>CBq%w{&VJ|;N@ zB|TJ!k7B@}S4-o(+4w!JBNZDCTw6EfC)Y^EmAM~5;Y2$QZm7ySlPp2coLjP#Ce@DR z>l%!-yEaY4pGjZ?!i}j5(dp{ad0D+C|DoqXVnqP&c)W{4_t1Pa&+q|6OW$!IAs}P^ zJ>p6<3(b7Vk#iLTwV!qeAnD*ZfyIT{@idQCDy5^9_9M@&(%gS}*AIY_n!bU4}6 z20J+N$3Sw)fcH3vqMp(6iXa91)#Z*Ri%dbG$pqEWC5pXP=jvH!?EQ&?qIE=5`1ttCdl(vM4_9E zgI*iz$j_2P4`JqrjO;BmoMJ7-&GZO`8VaNei3*&da6VuziFbZYtYvN<^o z8sfS+x^B^8{<<4xr?aIH`69|Cuw2XeI>D)&3l~AWS_$1n^5v>r>>8hjooLOMOsA2S zo#U{6vfbc!Vv>5V+TUk9WDU6FSb|*$gk+QSP8M2{kWhB-^u6!teNQSqz0v_3&)*ln z7cYwDynwc_M~fK9jxsmF%GAwu8C7vsXj}X<%^0XFT8X;xvyN~&OqaYPR5!)KX3#(T zXI8S}xje+Z@rmfm0F}!_$jrpRbx6l}Kk)Vd%8CG7x2Z5TX;@!IK!3kmRSQrOTz4A$ zgawZA`6QyP?~~U(!gCb;9qiAz|6gB&d6xYCFR|L~44>SOW>OqmvXPOf{x-(%Ck&pd zKWB{o2osd=nfUJUScUvcM>;?)L%m`!uKH4919bcyh35~spij|k*f&%Bu}%)pIP9BK zEn9g~*o z%ktqR#Cj~q(`1WwJ#ClItHbRGXVdN(+7(DsucNp?DXFRc(MVs9z5JKGsDY1#fl3Kl zE)z8Y`k>PhNefU5=4*K9A3Z9~$Tb4IKCx$He%`T;2XfcUbMTK zM2ske99Q2GYa7+2?U7{Z-qn80MtlR{BgTHyiks&T^@C?=`BB&j#r39tPJu`=Cd1CL zi`DY%bmvcWc#<)*QtqX_J#`4;~1ai$}Jt0Zw#v zp+8L7F9M8vKfo1_KzzJMri4`Rg<}ynZtE&YWmOD!f-px`z9cxLslf1SJYPQLrEYxWf|rJ20(@P08HB#IpoG=)|{o2pJ<{{jlj;_Wb-1Ghcz)d5DZ(kK0dGz zn9!D34yA@O(RtM1mDs|31x$Rw-^aI;k3g<}N6VS=84;W!3+G>e&;Wul|e%-p*-vytY8P4EHy#I5%K?oqU7|PID79jlFh5 zIHteeyG{PadnsUE_zAcb1H8y9KMTLckB0a6N9W=jb2-mJ+!y?+z5-Pv0dP;%zu&*> z`^!0{??#}!^Ikj2JDxt!cRJrC0xq}tW2(HRTDvTx54R1jn@uHZDW)1}=FGUv2|=(C z(rwM4KLOH4lvf`G(th2z$o5jf4Rc-WowyI$9*>5K9&hP~O$OIB)mFNW0J7e?+nWAS zeXCoqTjT*3@2*&7ps(g!kpG&*A2(n8vZ>R&2=U+~%atC4M4Mts29W@GvCHN`x2X@( zBx=Gj1ZB3^EsHt`W;2{}x(=um1PYSjoK^riJ5@9y5eaavP0et6 zhF%n>iDZStH0MgezGq1Y)SUlm-|d(Yk~Y;ncyw9QT9E?iYv93VWbFENxh*^UxKZ^) zvH}@6sK+&RY4zEQ7d3ui42*}}NKLNx;08kpd05 zM*S;yHG@W>PYWIf8|bFnl$HV8cqJDV6JI#s$=Uu;mFgUHY7tB_^OgM;9w1`zWmDa+ znn@?34B1Y`@@uuYrQP(T&ho0tf%j~SDp>RP%EZ*nuVWU|g}(Gz+6MtuFBc5~UNDs6 z=Y&sI$f2RE6d;fy$370~mQ5}lC4*)75m$hw`vB!Y0*M2lu+gTx=&5LlQm;zoeJ^wm zf!#~b|4yat&J?PT!Qed%JPMTek*LSn%B-QEPP{MM%%Ff)qj={qba4^;By^1){-meB z(0O)^CJK8i&Nk(_yZQ zbCOD%1Y(`~8lTLV8!V^5Y&pZ{bgwEQ-~4|6=UO3?5sFrWzY+;dT7#ve;4|c<;4_rw z77tMA*=yBjiAziPXw}{tA~m-LGGRd#fh|ZxF(i&ki^REJet`D!9y*RBsDH7btwv}v zF%NyI`+cjWQnLY8EkS{uP-0FR2jr_9Bw<-|AK0{j?7l^&=M`85qr7}I4RJT+fg9gT zN-w9hFee0;_0tWD`(4&xiokle3I(fKO&Hoc6#-&d8gDab>0_ zoRWU&=$yz_>@8VJOW2>3fr6!H@>z&52w`zED=ii@=B#5*Mk z=d9yA0url3)@GIUsSOUoCMv6UIp9ua768fSdy+Hxxh)2`1156p`_5Vi-&}iBBYS!P zBj2$%>j!wOGO|BnX1n>sZpSB8HYQ%@> z-q-!-;C^_8ItV{3%cNo8sb)D8y#0HmPGpljM$V6(~SXvl6mnULkQHktFr z1Xb5B4UH0uyq!$)*eRF>qwgYIT;GnE51VcA>1bV*IX{EOE|5ftl0C*OE~+!og$pyiOtmRG|LtJ1llyxGE2|;z{pY? znw?#avi+4>99tVyUM{<2+6~K;uWV$$?#xPd={c8%<-4-7mowS*Giy!L1mkEF-(nwb z?ibv!tD19|+BlwiJZOBn`kO=^m8bE$W*fVR&;!~-+B^$&Apt$-tG`yO=I`>~%hUb%Lp<77JoSsCzP(m2Bh24}`*%$+qxnn$7__MeyuN}^C(~cL~#y@^K*KN)Of@jd0jht zT3FY47;(U#_XBi?_)*0K1IEsGc@q&Nw`lF22=#oY$`C$uadAR_cndELeoIjZ>`c`Z zM6M}ALSN~q(^KNu9s@(CHQjzNn4a4UmM(OpYh-|=R6d|K%@cdd-8<5Pk*FAxvC4Eo zD&VPi?1IQ#HsP2IkrG@|F*uU0Y4NLM(OI1x`La}il`1SF1W%!;gIxuoBr=e`$)*}PMIShE z&p5n*K7)W88$(_c156vmw*$qL>LbOnkcp89%ubbcNXqc>dtMWBSG?1!39H|)RT*zK0JGaxCbLmIK=S7l4vd549 z!&fUy!~p;{V79Be5HiPexYnrZ7lzeF7L$|96eDT>HG<7|wxz3s-N9TRZE5olJY7%i zUJlb>bx%;z^U+WNdcLv2^$w^3Ku^@3erTupxv&)igpI7&!Hq@8A@5WOO+|QrD9)PjTd*A|iH3pLnP=cmpbG_i>vN&n}EFl3=q)Wto?Ix5=stJ@A(V2RU%g zksD(Ztmf?c>004l5AP6l-)>MoJE&2X>S{Ki!mAs{ls|a~K1%-8bxYp)=zU#Ey=6zYhmcF_fjW$k`}cG+0XgQFAKe$9 z?0M!+y93T@03wC&;ft@nOew#*uDS9;0RtjnvvQfD1bo;CX}LmW>JzU{y*!;qF{F#!CnZ|B*W<%3Dq#Y=F!3O~ zPIiZ4nXcD9p)=d!Zb5zejhTioG#e#a9Lib|G?Im_xR&XGDKH$hDVHd%W>j7y0+fTj zh-l~l0C&p*CT7n&QD~h}0Ckpjmno7+*Y0&~&$gJ2k+%LA9u9ZpXgzKp41`PWM1<$0 z3^W!TLx?JUY3EFu!v=ReNtAXrLOj6676yaHGGaP0vzo2|9{GH_-%UE@23U3)<{FSR z!<68HOyWj(V1S?eZ`*L}QYUr7}!) z<`2?8TDs9DJ($a5m0V&nTy|`^tT09)L9N^zlS$6LthdSC;r-elvKnC1$g`j+Ij%^W zkue$Y6L(SiNL?$3Wn2#CKmt?E*;hGfj)bM!6ad~;@kQlfjoE5Lsc5-{M}BO*<*Ds) zJ9|eR4;DZGPBpH&9NL~X>{WioSD#71s!tp%2(!WF zAWP4wG>69OBs>-h==-^`6mc@Uj{Rf=&VcLjif7ZakPtHR8gWgM7h#N@s4X3>Sst`m zSLrzsa}10YM6os1HjpHhR7k0}EwXN?aBL1@OHJZI(%q}N!~LVcccLt^^q4(uGB|HN zjB1RgnoAJ>Fm z8%o^}?(pSHr~XStg6~vpIXt6bmK2?1MmkVv`2bl?qnyy%w;*YzPj~rCE40t(FPgf9 z5;W-ESiFQ955&FrKw_~Zz#*l_m}OyBqtWP&Gc|B!pf`F0Ju!{ciCjs;EX@z&l28gF zFhi*lgd`)S#)@)&5-y{u94&EEW*rq!USvJx?)PT-?LV;?FGZwm_(nN0|;C6M@Nf z{tXW4f@dh>EI z0Ain|wg4Fhz^kJ{q_~!_KX#7T#KQsHtS| z61LbT^oq8fmf9AA!SQl#keHWt$=nS|jvd&e;06Llx@v<)y1V@B>F^j;ER;>h$IhsK z-V0=Z2}hDmhtU{LvCB1yJOWv?JH^w;nl38nl0E)`MMr&>HQ>#WH;34Kni>CPlaskH zVU~^*tgNgZjY2^2eu5!*cm@-S(dJn4@I}GItZ9UE*>uRvw3GC6XgM{fYYQOerfu;+BLAz~TIux9LpN!kf6W-uAbF?x}s>Zy9j;%Aq(6xwE|6dV(xhSXEx0TvZf0 zGnK$BcYF*?*wQw%bbSsyakW*99y2p<`+G~?h|;GU#VK-~2o$oz)ipU(|7vfyt=Zor zDj=rruTgjAfD?|p|3n~MI`-mL{}D~fsyn*PQ9DXTH3I~5-hLUfyUmZ}Fx_ccnDvw~ zX-iR%f|zAuDXvAvSOBA55NH-z5@ykyuR@#txvDXYx|ud|DP1r?<|!sOK0hkPBABw3 z453e!A{DbC-weIP9&c@eO?Yc-vIt#(F2%91B%s`ZM!g^-rWRD zQi+&$toY_lsI`rkVH)t1lp1TE?_Q}%M+X|~l!ea_kZ_5b0BA%@Lh8QS4Ou9Y9*jH^ zN$A>ZX3wa|VIK;86%o#nhWJwj&MGm973hwl5VVjGbizdz^Q0n)fcSN$ zdQeh@l7C&12P(iDa0C#S-1*h5%WvP(OKO9Kk<@hKEcx2m-eApduy(>hHh`S?&*4w8#73sW&*$a-YRcq>(~U}V9%v~yWysSk(}GsA1eTz;{tw-T&KHaAy3HC>*VYg4mY zOI2;eA2PKqpGDrvl^S-G%!NR?9nEW$pnhs+$uh+nXGJ;f<_-X?U=7&W#2t@k^G&#y z!TiSBSV4|09{`mO5&uXJG-T|r)7To=C9#PTT1BT3_AQi$@^YeydB78Sd_z$j@L(-h z>H~t|m$w4-rsM)w2t5$yF#oYmp98nmC=gt>UO-U6@Iyf8m+z7(V1&g=(0-hPMJN%~ zikfzxFBP*+2S!lASoQ+K2~AW7P^EA26e<*Yjr)LtKV?Bcum}_nSb(pqk?bwx6^*Kz z6+l7F|08$)dm$+x)^+qL zpP*%qmCIH_JZ=phobe}%Pbrls^qzo|J32RVsBO(bwUyJmt2 z6Xq&44yRD7$s#aoKVh_npd$CKcZ^Su>?B|nj$JK?u#|Aww8F+Hw5T6*D;gR0?9uK667PSmO>n1OXHc@KX5D>bH}Pj75v|5TLkp%31B zVIKIWC1-NYV-bRI-;zl>l4Az+NgN<=`#yY45^}sBDhlG$faR$lam;&5@jyQ7bx$+= zS^&Gv5Utf?E_zP9?{5960q+Ms{Pp8{Sk4Ssg%#IuW#v})uUN@-&Ckg9wtHTPM2+`D zeS2DZ0@$Q^>3PCo%Q)jAEo_ruko*M%^O4C@wG2T>-%>>elHT1?jTY+!F(@S4);P1S z@nu&u_K{m87#PsXxmNm4kKt+60-%1Hsh^cPoRbrCVSrgK_IK%KM!Shl?yu8p- zDF$)@uHSG5o6`R5BU!OoA%cdatmHzH4B%V~h|~hB5A|Td8$}V66l+|0C}Qvy3>p%? z_>`K7mvbk$kbI{wn3yb}M>TeN?$xbKnad2KrHxGs>hC%wYbjaA!ep_iuDaArDw7aU z+mPvkKO=$bnKyAVTzf@KGb%CqjN9UCFBqa=W5BpH7y)ly}T}Qv`M>G)3sTyWqMZq zUdemDfR8R9ncc=XZAlv36uWrI*MTqp6P)-O>v~)32|&CDF(%>ZM#zQ^D4lo3k0>gp z&eR@pRud2Juzs_kSh2(+8DV67W3e;WlB}&vv6|5}3v=oF&(dBq9BPVIx6QZS&H{B* z88ipTm)L&<03CnMC+57P41aA!yroSs=s$%`7i*uCoP5krrIX>2IL4b+Kx*{AO4fKJ zdd;2a#6OYewBY8y#V(F-Ns}0R>W$~hr;vP>&m>CIBiJrzs%><9gl2jHuw~o5iLGwm zeSE$P&$Q;@`ZVb@BAucqTIA+PV97^D1^Nv28TMGPM6>86|FZn?S%%sgohJgQrKRzr zV+_tcsFDWkEa zgJriu>0V%qIhe-O6?5hi<6PCr?RiS)g|w=gJo@)jQ1-~EA86-&>CRn_Df><^T7f84 zlm9tOE*%ig6lHw3cQ{N_3}Iw}qTF!|PS+6J^@L`J3azuXhkf&+T_iE@?hO%v6FTnL z5Rlo=aXN(e{*uRZd^?cKbm~Sh@sZSNky{zjNoveGJqepVKnw>!pqq}-Sna_aA04h` zgOf^l>MXHPL5~P8dfFQ$v=3x=R6Q;N!l6V7f9new^?3Ugp2+_?%)}UPC>78-)AjRknQ&e^suv{hWsQj#dCYZ4Od%>pE+GVdbJjC+sM22CQ#ozW+UlstDReNdmQYDl?uR);JrvPN%4~t9 zC`he_jArn}c|Ut=BbTH`!{S)na~uC#DBu!>xd%pa#32S_@0^RIwbnu>!i5Y@VAoD= zWMfuAC{++kb>W&J!2QL{&_|?VFTh|z6Gv09k-_J9)7`pkL0KG=>{u3>54t1999+(T znZf2UM}1boOxjf`uOk%xK~cr1$HWX4f6Pa}WrI|=)^3tK^r{_-53mog5AYB0)RG=B zi%UqSmxQiu*)xU48hH&vo?1G2+IHK17zGFm#;m|!GCp-#Rvj=m(LLt0f-2mZCyqC} zc5|rc;b2KH>*R4=#m%w$bYtz^r|o#tqF;*23Wz+Uf&q-}1JdbT*x0>ONOID)LgJmja_@(dAWk!4 z)%K?pL=*#0K?Tnc+h{78c<(p;b;Kb1#RbZhIG5I=7c#f`;(FE zaur~HJAN-F34Zr~^JsA~Q9S46DB8uLdjmValO11r;YGuLfiJn-{-ei55Ff5W+=NtaS(A@TxGx|f&D5vKeM!B}%Y<)| zJbAter|{T#YEp~Jym1(Sm=-QYwS#)Pp1~_3FJ`Esehg;_5-|>ZMJ(|a))O@ma>Y=E z)V zr@PG1PNRxIbr%ljl?&H{jf9QFMG%|KqgRE zC@R~IH86`zD*T0eGNYdy<6x)yieV0|meT$dTnc+)og9H{%TjuiOT+J-FFyYcjI-fR zf{^woR|{g>M9wbiG8gv*R)jd_U zB2kxdc5Itg+(jh@e%6%4!6`AEG-ZHt8O}p%AfO@VCDE#gvo0oBhc8Q(rUKI?=Ljn4 zeC8+b7d5o)osq+!N?YJ?C%vX`Ta6>`GL7UGi|iME@W~2oakK#&r|cYIy*H6Q=ga9f zO~Fe;u14IN@PpH@?o)H*ShQT*bhf6fqLbX?Q(f5}bZxJVnl5dRfh^cpD=Gmnk)}~` zUyE6T$A)-x_JLe&(Y?LZQzas)?x-+2D$=#x;k;(pwo7lJ@6;>l*V(6g-Iv6e5G@so ztfuOpQwgTM*N_*wI<*Ax-UXk1cwhI@d56scpc01-KPR+>VS#}te(}q-;9c3Po{rhm z0d~-BT=vemd%4o!_0wz1PG-!w4yO`k_p#oNK5{p$>AytRKqXmS|Rsx>WTw_Q8fgB}Q}pkvz$|EsuF z_EE)|(@>fXg}G$^Y|KitHz2#BjIMIniFU#siL9KoLY1yu#K4kqtcmK3$}n5PSK_0p zZWr3bLYQGiXJb^CM5ZoR-Ub-(@SGU&<%(Gsb~dz#IlnJ8>_|P852ZTQZcp+WL%)eb zYvt=l9SB@GI=J@!ea~0QHjSSanxnr3we2yt(}Tz{5G4Wn$3pC4HtrNM?>N6r5Q+m2 zm^VpO5-#CM|3otvr%I$O3~2mX+5Ex!m|F}!;6>qwj9PYOS}WU$N(H?#e^4PB+R0!T z4BNLv!fXeY`d-^+*gQfR^2yT9$}Z`)6&|!CHjqrqlil6#9~r#$9kiA>6$PvvdEsfz zw#k&tkN8%;%)n;bZID3@b-F}{!nIo4JSn~jKtC^1Jaekuwt|f{-BxrdYFMMR5InjOIcs?QmGI^emL^ zHyWEA!B#C5Tyq%`{=dIQ`Q{)Wz2x)=P3G)A00gAnTiCF1n~%!`E|5ES>ZB;qeLWYt zDHx+HsqDl(`P*Af$^mbzRmSR;3WGel!nldl19o@Paxw#igqakt`iP&KTW_>-v{{y2 zO^Zb17lU$VbYyeheR1qHTEp{=U-vHpcKLtwXS&Ilv+lOX11yV+qR2tzLqG_D>Xr0a zUF~t<8@e^1XLNuC;O?EdL{=#}pkQ3B_+&L}io=xz{}7Qt;t~o1*$y_Ny$-DjLu|%j zWU4``2s6IkdbFw%++Kjmz4kE@FYe>}PjPygbw}MzQ4jv;M{RGVNXbYXp-XlNp1$0x z(SamFY;q7w*qYhy9#;0)>NIyAm2WqDIu_wBzG881#ALPJ(0&FMHa2iDdsHSnFBka# z5NYlwo-paYm`OXCPo-*SW*Yc{GOGRlipEw3o_G{($`}k5Ghapt%7^YSTT&-(0*Bm% zoR~3a&3cq`JM$m|U(n(pRfj(9?}*crxHc*| z3;Go&?qp;!j%-Zj_v2Sv@}jC$S|w8w@#&lNzoi#`=jG_?k8_0Q`~RE1gPq@;kgzXc zqUsraO)Jl+KV>P?C`tRfugFzfRvEjq%4}ZZC6t!rrJZo&+ z++vYXLoC!NYm+u<7)fvjpRWCGngh!0o9FMk%HX2TWvuk7A~K;L`+%=`y!$Zp5nr{c zJ}Y1Md^>vMKuyYw0sF`}(B=OBcO@5486t~-12CCd)W_xtGi^J=;txpspL9OXnVu)# zmk=&!5UN3blQwDBYBrsZZeBZOeCJpV{0En$)HM=xq(g@Zuru+5Be+8ZDjmze8-qvBb%)}7xTye!CmJA}CS%$)O=15PmGmt>J)lUbW z`%Mot4O(nHkS91}Pe*-s<(ejd$2nY$wyIW&w8QDhmm8NEdmmZ3lc_`wRc ze>hh=fuqW;EegeYUIuBK>@ST%b$;Jq;69Xg2<3{z7=yovsk!k=EE%;D89XZ12EzfU z8i3S|_qEf_5RJe1^94`j-u3iRbUZDSi&z8kR`?BQ_rbWeK|&m(#!DY9(D6JzKC0^u zqeP)vJwVlkPZ*)**cQ@t6+`aoZsInLY_m40NXF<4EBqF5Qq9Yi(di>>Haby@ znG?ie$1cG$10=u}nG0$h^wd{xl+mbrabK)^r|;X|E~E(JG)6MwVEw-BtYZuuYwz2Y zG02$R)v)7)Eo7C$>N*e3)%|=kX%0yw)`64D@Nmo0-T-lfGp9Zq^6QptNK%fqXDfCx zaF&&$u&0p=+t)ttos4F}a(Y^|Uu2MP&Ox^4e5aMGJkHKiu8U=FKf9KA#kpWV`9b@h z&AE;9-C8YKT5sUxnW?Qd%qXaCTFU*`Khi?Z4B+PGgxqs^#2BvAqIhFHN%kJAkU zao^1~c3^5aZDqzU6;Xqg%DSDekh4%S(%)Pn_V(3I=N1Z?8(;NN*2c)_#vBd5X;S+b z^vzj&0aH-t)_d~nBz{=oNYTr6eyjG8;Bd3HMxI)EU8`U>VIvh$H{NIHW=iHKiBB<; z&_|#;nElMm?B+Z%Y^DnW<{%1Ta1xD;_J)UP)pe+*!sJ~35z8zt_U59&^31hWRVihgS{=h+2M-2Uhz9DjQ3Y@9>x=D5t~x^yOA7#xb6DI;Ndc>Z zZ|sy`+$iY1$;k&K+qI6^V#7+dOUK7m=aw;bXky`$=eU2Ktb^RGVp;1`=ZiHXfdVyH| zP~t5iZQBxR`Wn;iR2Ujy>$M_p0sR z)BMqZ>WhhUv@0epg6HYDs_8Lpa>%@}48-{4(r_}&c5|$wk;v4G4@%W^sw zWexT$Ayw*u84fjWqx2?dY@<$Vmd(%%0C0>mVyb;?#x8U{~aly9TtxC^uFKQ!`a;a&KWu#zAloxQXZFBhalQnI=X&Cx617xLk zwt~tJl@?+_QXG@K|CD;Bq^FtEi6x&Gqx{(+UDplihE^zbfLp(Wj*gjOt6NmwmoOcy z1^jV&6vOcBY2DSJ-5SPF-{QK4GYkw2I>-x7d&ZGtqSe+aWmBwn?Q$U_&IN#C^TZ!+aY zgGyMz^avpSJkxfS9wY=Dv5rp6@v1>Gv+kI_$L_L;sw!$$n}MAWw$4gk(GYv5Y21Ur zd7_`7#H$AKWey<>UKYX^g##@fEE~Jeb+G#_dEqLhL1=}x3&rIR3sq#|#8Kd!@FRUq|#x_0o@u>>`1^i#Lr|-neNU~P-k|Ni6fxk%R ztOe)J;w8lb(jhNCan=AMMmaF*eRYLWwf}*>)*prQ%s|DIXi9bO-sKcO?E{}6rL-~= zBnum2*_{-|n-cCPIqnMvYCL3}NYNcyMdlBn4$`jn^}|GpL8yXGol8+rLr{yZMX{fs z4z3mLA(iUDt;e!Y-^lgsI+J38)ow8;na*oW#^6E+KPWS4XlRBOgor3L!}Ac)(9mc# zJoZ2}wffWR8qq0JFs+sl&!|`KQq%>p7*Zbl4ay8#H^T4W?70v>o0A_AF2`)0bMmDr z>7WA$0)tVr#e6dtG||JaVa(S_!%)-|kh0sdf0NBF`&xK(+e|oJhN9B%sRBakSMts| z3FSYdG$4}a`)n%k+y(7b$;V~Q8pL_Vb)iEpC-Olc(v12CX%rPfZaNeb$ zf`U+QGxe`+T;M69;vsC=xu4ZlNl9FvRvotuToy!4F*wl5Zu#cT;6T5M)s%f48?A)!c^*uF!rB3EHIP@Sn zOa+5nYBMZio5v_>&Kuvm8=B(1|G%ommxO%a$^Nptxw7WhLULs?{@Upb#xr46U%}+Io2&&MKzF?a+PHRlZt})J%3r1@z35 z6DX_JbCG(|u@TqqKKGn%>Ur_U(v+$2?QJLB3$j=P$s={%`06Wk8T#G>%)mMy;gyqA zeVMw~w-TdiJJVRYuTu>YGpF;lyD*$R8YUb$oNp7xE7StJKFyt)w4wDu4|{wBO+e7= z-|pzB8^yY~He<_mKNnZ66~;NpG)5Xmomfrgt;~mwD1T90oudlo#&00%CB=aHan zn`7e(jy;|jNL`fUy=$=p<2s~;Zej8zmgom6Jw3%!u1Z+AX<4g-^9hZk&6xaY%3#m- zZdvVzG2$;6LsoRcN=T6oDjbbMJGsuGj|-WICNwlFhPqiS5l9bi_~F1x#8) z^1yS!GzvgY?5w3Zd34@9d%1`{D`D@|ex-H8u9y?FEugpAnZ-U}e6z2~@IpxIEi1gIGSg~E(p=~X3wG1 zIv~2I+5M2goaPngM#Cr4BqAYYFwIu@%0@;X`UGFJ{9CX+$9)Y0E%e1Kt}39eLje>(8xG%WYbn0{Nbq(>IiwrjKQ!= z@@ZtdSm#ota9P<+^4dYKq^DCs$^0Au3H7$Xl9F*P;@&G^w&0&aF^wQLvewg_I6Tp( zjjTzv7Cwnma+abQ^y_a6(o|BColsiiDh>_+B?b`%R!J8!A z+S^u0Ul)RYk)%VnVJLLEb?#P|Gi9emf`Ht~h@S85a(11e| zjDiwT>T3Zw$5n9sSq_L%DvN&-1ZjWWzzky0Vd zvWJ{yrcz%u{8_ayJEb%-1KXO031|eetq`=KKc7pBxJK;!Y@Ts(SYf44r4h7>SC8X* zM-QKLX?KReFgFzv@~LRUhZszIC(|0}n;?(?3qn%}=;GS$I8%TV87>hyuG ze2IcPQkp+UE0w4AWB|z)9PXlhf_5OqKD2srtp3MFzH#A#IesDjNr z4Nu8}$obVm)da@Owb)MVqU`jAw6xuewC&RiA9VV4H7K!W_VC7mVbEI#wk8ZXaYmo%jjyBt)s%*i88HHn1OSx1|YJ>qAFdK!)Zkmk!VEb&5{oU z45v0i5{x(j<}|2?eQhL#hG`(I?3@bKa%Q`9bXI|#pkfIq!_(3?isPax+$&Z+7y?j6 zTWA)QGMyXJR2+jC)1!{D@kNpp2Yok2+KlDGn%Xv0z;UVIj6cVj6W5j;FKoij>O{IA z^ne=houD}cjEh|w*SEBw;tyUQW)?X*5NQ0d{FASQpJ>X@@C$GJgU4J+S!ZbkDqk=U z1&q>W@|NbPw7kkH-2)!$=?-aqB7MFye7a9Q`|}dHPdj|YA1||Y(_+4u_%a~44f_=0 zYmzGj?&s*~I?fA;x!ogf4jl`65e-}>G~wm-(Kp%1S^RNmw@dD#tu*zw4_0=ZGk1+N zUsYuLP1Rc*7z^DRK`X*ZmWAyyoc!-)mmvmL+7-@{wEQ}zaV_Hys=ZsStyW{jNQW+w zw2B2+n_xjQ9PUK+l&aM@RKg2-xdOwA1|95{o;8&BA30s{*kX5-cQVwZN|jkmstF9U z*km2;^4GH0@zqAWT${~5w6(^5PdC%7Sm2^-tsFEz#l=`3j5F0Ek>;h|uEK$OZ7tt# zJ69o``wLuEBbe)-xy2f`hX@UAdTk<62l_Pnr2F)karkd0OgO9E5^(`bC~Nlcc`S1^ zbl6E#I_d1e-w7PRQ}Ge4Gki~3FKeP$LJ5M0qn9ylVae=!jzRN>*rk8?jJ<@pMn;lA zM<=HX`UvtB*e}NYNfI2%zVhVoiCi3PpE77_yT-!y*;Lg`K#LT6%yaAB+gP3yvQsh~ zZV5?bU(55qpk&J=MW?}0ZA>tKIdWR3gEq({0)C*pHTklcppxZ zny*dWZR)coHgDmu$KubAxS>^Y#0)9jAnsiJ)+$g%;(4@BAvbp(ULPjqS1$B;NkpOJ z+*YfEJtqnonPT_}w#y&A4Y@M17B>se@!En_1%zG^<+9Ur^4sZi6*{H87FlC) z2ve`&JPuEAI?YYFbar7v#rc%TeW0Gn=6;QZO}ldk5XHxJ-}!$jVMly=zSg}WD|Myh z3hHs)%?N*(ird1J7@gvcol04B*td|#V=4p~xl9CNk{!Xd zd&{uScokGGB14IXhj*dLFQ3%ZJ|}Pd2!(Z+d^J}t1~2fT3WuaZcqDbJG1pcotso>^ ziL*p9er584V6DQvBsFI!`4YhjhJ(8LJXej@ObtVAs65y;Ya?>D8f(@BL)2R(Syq#`2bkmxi z(9EZe$*|(+lklD-52)tCRUoH7)ozsO3W4VN?Pp%rqd6O{XhpVa@LYWf*B~Lri)1Y> z$*+sZb$L6VV3kMFnAFCQsgR5$2{bhyLVD?P{Rf2(Qx8zPrYv2sv=7IW1VJe!Xw&qB zKXpn33FQUw-XC|g)tQ{{;XivhATE^>6MpjZWu|Wu-*ZtBEt@)?$i)ur zF1>(T2kKxMmpDlg92_%SYji=HXL*xrCnvfVd@gSi)dZNKno3|ssmR&mIuVLg*M~hy zDhT5%vC=tyKIx~to^)|*PjN^nZXFVrQuLCL3Q62>);djuR}m^#Pmr^oIH0>_H@z?$ z0Xb?t5KIWGr}=PmoAl)K1x?epXh=0wwRCZa?KZ;p^5*1LI=B`q(uKha*_a<60HadT zqqcctr-SjFcwLZIl}A&w|fH>n0&{VVm6eINZ);Lsw>#>eIAcb1oGl+k%#_B z4su9(+%NB{xs_R(XA#O(k<`+mYA^JL-;;RY?7<#G5|Ux#9TE~P z3aJ#s*&y^B0CeSpBN_NwP&j@at@9XLd34_*9SPN-*3vZavv-XJdjSd{^xSQzU;E%P zU68%%^&@NlLF6Dt<((o~aGbUC$LhXL?lU!}eP(;-mW%1?)Sk(PJe-r?LRY~mxG>)o z1-%lG;dkzrYBgSy>kAB6z~LwJ`@l1;;ZgT{YII$ATR`pd7SQP<5?x?Wk@=26rfQ?` zcS7Kh`0G`E-b;`HkWOl^)Et5L?3-gwCW3i2aFwRJPlZ!~C4ik+Uq-3{%P{rTa+!3W zBo_p|Gq%uhg~tx7J>F$(Sj#ncj!4gKyxJw-YmpONElYujdaUyA2-+yAtCY$n`07Z9 zQ@5A|LZ)U*j7^{{D`sz0$-frvNJb+oxkQDit1ht#$)O9w|8wJ4cFB=$34Y_YX>3YF z5SC6*Mrdjsq0XMNTBUp?ioqto##;jAHRi%~f)1~O-R`1$JNy?l_3(*N zhpwp3qB>d1Ek;LXw98y4a@^g6DeSUM#1xa0E+wr;(GS5PUZZ7%g;t=!2{AaWKrA|^ zSbaf{_D#{L-d1*WgimJNYlT`G{il(RT7uR(FjS?});?5WZKyfQ278{lVT*FM2H}Dx z9cqbW%QYP@qWrM{#$iWXVrWGg7ReaVE`IfGIMi~XA!oNvm87^#Hk1J_@mh{0RNq(F z*3EdeI=a;P$IHZ|=uNkx%NAoxAxrWFp^t&kd&IM2piU-RtdZncn}UN+mXzaGZQ6D) z3J2~%y@NrLB2@f>Z=FzxMuB41F257MepZcle*+5|EU4n+qlRV?g&Ot_zz;skDO8|N zltRx-Nx_JuTT*-|9rRL7G%;4yiLl7&5orpL%lja-ZXB)_m~?N1)U)(CcA3MQ*i^H-2vy;Avz=vd&l5^7Q*5W~|#VGU&{ zTTrgIiw(-5y0u)X4Qa9D>lr(2#m6AXR~yoek#e;_@&OIz4L5DNvDn)vt8wxrfc)zEUJ%$Y2+yGZ-ntJ zK&n`-;3FlI(=&(cjjt(DPjB>Qb(-F%G0J*mW>i}6%eI0odK&FYw(OTNCo>63t$e&#AD#L9}oX|{!wrbBFKg2Y2Q)SCkI}8 z84|mYc_r$p{^7B(Yw7S${=qBbv};wmS$uA81|d4l56ohSXo(94pAN`X|7RrZ_2^p9%XPz{_K~Xj(4KJ zjE&5KpXP4U%N!of|9x^Q8fcDs%N-Ztk>V!p5~R;dWeCuyUD{45c^bQ>dM$@dK}%%^ zD#vXPzoP$#R^X^H>C9=+7k$#)zNq$vx9d@j0Tagkj6i2Xk#BE=wqa8DO9x2!r_-Qr zB>Fkt-@f%&*%~{&y9gRxV9E$8JEbYtJx6hMjz4wq-6@++PStayCh&mNToJoG(!EN( zd4*ay|8Nx|Ac~DIiTFe@eS`tfRYUE8ki@Zd;shtsV`ZCr@JRiSbh)N!Bg!+m@RUqruW%rAWYL5;tx=)SF~Dx7_)jCH#D zG4(`-382K{<_;yF{7_8>d2s^m@r!Be2=kP$IlN;{D?J9bgQoY_lZn^kEGa(h*Q1r1 zcxK)kal)Gsde?aiT+*W_`dbH~)+A_pv8sALIz%By1CmX37dv!yDV%g{1 zgcwln;b;EX2kzBt2IwgPT1Sn*RgccouG(fWfEM=br41c*2p?KkR| zL;yyVn7f6=zraugi4GJ7g66wNDEzCIcL_B<4WIJ=NOY@E0*S9X`_-Pfp=w}5tC6s2 zA8YSJggGfK5!@BEwXDv|OyAdUY5N9Dhfle+$$7OOR5-hO`s+&IVZ+`rpQo$<8x`L( zqD!WqST1FQ>Txw1r51%Trp{G9rZEO#SiQ!sNwCc9li@eT!dWX4`$lDjM*iPAF;nkHQzm-;%*wEEKE+Cj#2) zK*cQ$s5awEH_zwhpF`J^&&sthfcWGn_cJF={ID zeCi$tI(#294?o$zoWLsWUfgP1!-&SPK=-dY6O6mF6kpV$JSp;b!@obYS3CFY;1oBX zDYyASTPeyp@<1HabwXE@jym?6V7kjmhHW+upvrn@l(z3=jji|J%I=bAR(ET(0YDt2 zTn_$9;0-7~vd#u*jx?Ft)x!lJw08KBxCzIqy;EK_PzBi!xzH*q|0!v4iPsEq&7gDz zZL}^IgddEckJakvIECrOG5byJ)2N3Qfe;^UhBxaf0M4g;6YBKAXqc7txfcdeTy1I0@_p%s4=Jrp zRAsC8+H~P++r~WK9y2<6cMTkAb=;EiGocZhpYpC_wVOY^T}7!MZOBp}+7}-Jt=dZd(EB6^965gFS778@F{Cmx zDxRudns7$Yuj9WET%Rcy$-uoXo(~Eh<-B@&bt}djLn||zIwt;DUU z#7H)9-}IFQ_O)j;?wmf(&!RYcrMrMx>sSJL5N5e(V^S!BhC^B5pz!|8p4#LoSnikG z+Z#Qq7JZ<%jv@yhR(dV_WaW$f5F%t&Myy$38|tnNJ|oL^B2$J`_0Eu8PyBJOhfwGR zPt2|==z}yX&}I)hBsqD?aiD0)%H|Ab!l(P>Gc5gEN`m0`1sw*8)-IptE8V#=gLt!1 zjs5JQmP)Es$qM1p**P+wbisS1@oZ)5O~{3FBAE_}Kq|G5ISD>yZpVopoG-7%zW%@lA9|&715h61zqz>;$t?otI0InienHxc`pxdb`=pJAnh$Wpb z9$*7Fq$^XZcIr)X!aMZgj_ZjORA@F=5-9R*Y*_zYL>dvi&!)^R0o>| zn{U>{i87qbIVn`oJ^&s7-dHOYw>?teg0PXGIah-!a#0&4O6qQ&QLZgJq2&p?lh<}G zrC%ud%%| zsf~J016o&W%tWpDQoWhG4QGk4Aqa(DLrXbIsv7c*GkOh2Bi?)PTf&g`8M3{*hCJSy zw^CVQ?tO>x1z+@5vL&yn*^(%T?BgRy0)T|d97mv}1T@cEKkgb%=ZJwgQ>u&E1~kRW z8yE^)9Q1T?@}w(kIO^;*jnhf@0XW@PZwVaQ+`qEhxgLa5ES-eek7i3^ z7}pUUkiM;$yMFnbynJg-xY04A_h5+~>}UPu%GXRP{6S7>0faXjP7w|~YJG3TDX|@0@qH~6HKcm z?HpO-v`aSHw&1jgAvy78zLNdSb=P!3XTBQs;>UI$F&cV0rGzE|WW71t8L~`lfLi#9 zrf>0yallkbU%+xZ9$G?e%s(r4R6(^_T)k7}S`n&rXTL_~|jQQ~@va+Ta)ExUiY+!#kX5qQyCleT|zf z32j4%+@ggfxUBB?Ph<}`A}ZJf^B3A)6B$|Ul#6;GTM%)xPU z90hKUi_0pexjMVqkO07b0c?IHprb9dC+T)pz3okHRXcs6gB8!TaxSgdwhpy{9klqa z?b?eX?)*<>;M-lyA46I8{ETkBIry4<;)a2y{|!`mpkv~D)xRO`+O6Q!kJrM#H~c5T zuf}3daUAvOHHb!UwNZ7fBIXpMb9IxUl1BvlMBv+6|Dx_JZeigve2gko{Bpl)zuY#* zE|VEMw+S{CRZl_BD@qPo&pou+!z&)vQNSCQ5v~u8aIez4KTSN4Ba|fH`O@zoPK~0s_%RQZ1WhR}?0 z74ljsDK}&fP8^#M47m=cvn~|Ws3)WD>m++4f$f^-f)nmr6>-LMy*R*?@n;u$9Ai8- zixjTH=#5b)m4}TCxXt-8H%L4NKK9L{xl%8wDQik!{SI8CXORIFbbPKDW6_tc#f5=D z;q%!g+yFm7z`q_QrLb-=#5|rza55|hJ}8Dafx{ENW6x`ARQ~^{NrEbj6xSU9P~owX z(QHqW>$HWcvvi86#<$0pyH}UJU_;iXVo!TuPXluc(qe_{1{V1Iwq<{WA!%OIXyu{W zGcS3P(G+z115AXE7){O~sOq`OD*%_2ZLBG30eZ>SGd zZLeOtKnmgbc0Yga&Ago#IUm=vT#|3VJofmRYgPg29C<|Sloevl?%DXi+A0VQI}z-K zK)%ch?f0LI^}e5mUw-iWdT&c$%Oq_1nRmc?c2eluJlU<|v6m$Rgl(i(F3V?ri{}kb zORSSvNz9~!8p?+P!`t4T0Ln>CRx%>!+p-mO84~vF&+C{aA%tNoLo_zC8LSQ@SSQA6 z8cxzvNQd@}C)z!J%3LX7NHa6vEuF~%Uz+&Y?&QBo`2Z>{{U(AIRC0sm24q&prl}A; zSZH99g5~k?^`MXtDc{j}h$Twb5!3$vVbespAHiW085S0|u%!NyqfEooO#ReiW2c2) z1dnttRzp7U>DIfF8nJsF%x$ z8eMIKoV+-qO3EDw-OTPiHXd(wr_vMz&N}8!3Z@3jsKi>xPb}B&89iX+P;SCGog^(r z*w%f(eTSny^G}z@K`oVuSFo_g8kp2fD!-O%z@i(R0PA#R<(Yo$A!PhzZDn%_RS$6R zDLec?@R31tlYsje4y=DQX8V)}B<1MC<^FsA2{B8gf!?T11G4su$Clf1ApWZ+ez-c5*jIKZT_$v(15{r2l^R9@^P>=yZ$1gj*CY6Yr zMWn*DLzYyuNw)Ce*UFiW5;sJZbSkHX66ZphAR3K*)c}VVHclXkjrt=9>(oz&bR|CI zpcx|zsSfDI z0yZkfSOq!|L#=dcNS5M&*jWMq1AkxSI^{9HTJ<`f23G~7_HXiU70k{_>oOyb+dNM> zi~2*=ZjmC3uPd5kvW#T|N(EF!nUegmlblxw!KmL(ZjE|Dxd4@M(s(iNLRUFh$emXO z;6t}v{pgWMENZsh(h=lf)M<3N)#?i_#o1*CUYu5TBi-*x(%xtMCUTiw1JxNZ0@g0K zFN>f?DQ77Nl0Nyn_^ZPfY(cfO8?h8sR1?bwwBOQht$2~v282m96 z`~XAzpv*k_Ez#;sS$2Qvs3h|d?*a9Z2!z_8phY7xY8CXFhSX(qD&wS!cW=`Au!{DS zF3i_aGJeR;+;J3?$V_SsCK>a}m|-ywVI2B7<8-k{4^0vtqrOxPZWd%Wmg2{fwUhbk z0(4K739)Oelf9(Euc*Hq0y~2kM_TQMN~ns?H0?D7=%tC|TH(>kgnVq0tSvAw0y zHv75@$+E}7fIp2PmRAuq`z1Nnynay*PNJPvFZ_0S>1*9#5BM&Nq%{zV38n@m)GE+M z=`JN?!NT3S(+s~OT*4(>!jy}K z-hiA9a}?Bz?a<`|QX~i6a-s}Qr~pZ^htB3qa?k{Xub10!7LQRD$o@}cMV&ux4(W@V+~?5`1rEPPEQzt?u?OBKR5k;(n1FKyvd$JPp>Cf#G+2ZFlT<5m$Qzw8?e zmjYD72;Iseu5sW%e4KQ4ig_dGWw7;3#SdrSj7?5HE?Nk&=RHfgkB*4qPk|Eniv$TwoN$r_XR~mG2&RqIqzt7ybMEsq z{41aM4@U!83FFv*c*}O3&2bR@5gygvZO5aLlsQV?nLe4bV}7Xf+z7@gTZRj}o=w4FK?TB2{nJrE8wn0mDT#Gu zPV~J@L;(9BRCGYT{?Q}lI75L*iSeJ{=7^f5X z@vcRUB;TwO>j@+rGuFCQL}VNGe1;!xL1*w*UveT>Vr4ZXTFZQ+4J8x!4^?gLEdX5|JT?@KFb9{UfKRbT zs%535#{Fba@svavC?T#!(`*O{U9FiUzYYqO`PApdC+aTT4?8=+Mf#4S?7HA<1-4p> z&}bqer8Gu++dS^=LMvwhGK!p89#S%p9Jl=i%_2eUN8rDWWozUh(&( z=p#f#YV@XAPc&jfOG^D27t$(J7k-vImj$J*HG`{IMOLWxrEk;GNCv1g$S;+T(ayN? z|7dUvz|kuElJxp^MSr_ngvsj#6&*@=1U^uF!>R!x6_u;Fcr>pX&+dNEls77i9Wu3f zqQO%QlEDgdmNqG<(Olk+%Ud-%5T@k?5vT+CcY@_sOdQ()c|SPPiF$ zM^Mk7kbFAY{D(858HC=?IFuZkt=@MKiZwF&|3BnTe6k@OG zGjIIK6VWBOJ~&2QlXxI>Y;-vqWy+|s^n=M<>WJc3!~r;dI_guDm`Znvij2XeV860u zr^xG+8LT9DT16Q;m|B^xsA=1cce0naleTsbA|vmY%c2v&ldX_rRvm38Vt62PV0WSB zRLV^~{aG56H#spg{BH-dELq|9KPqEG*xrlGS=z z(ay#vLrLjNLl3L9ui*F*GBVM{%H4KF5=IrXnl0#lkVl>-R#@U}YGjS80>~O$<&CJ&F!|W?BnCxa>D{ItBwWoC zk8(>OetQ!q^k_#kKl|w@1r)N`vWSL1{MpIhL{ezK=gxdj?+$C$Va+sIbEE9uq&Oh- zU@5ly|6Cm`=t;&K?5`N9jjC_qnka7h-&_01ttG+MKRs{IWi1ms}DwteezQSIiv1ujP2Y=g4F%$0k=0Yr0L#J^cW#Fgxv) z=_B!t<3O`_?_Q-JazyzPtv3L0M^)(i?y0Ukj!WCpp?gBlB+)tqNoF9UN3G*Cc9%qtx(`nCOs$DIO9suwayLojR$A{?ZI{b-F<_R?x)>AlURk*qfgEusv-*3Nf~#`Lmd_S|r9VfO==$1tUQlR>z?q zjb`A^Tt;{4FR#V=ue7r3Eahlh=MJ)sap=Mc84VEU5&m|@6`pt|aEBm&piTpnsI87b zM*AwT9y{)6GDnmd;Ha&)R}@h(XBbiLH@eVg6uI0m`pvl^B&(M*{&e8hz0DA0zsCmt znhu_tkp!Zpago0IptN;g4c_QNUKHvzQ(fGA=66aUfwPHp-S|SoO0bS+;uDOLZ9Nv+ z_E_2G*4>)zru`@(;FLn`u}GnwGlKqXdxSZe-CRC?h{x0?Ff22NO|uUK@ry5beITjp z-z)YXC32GcGdQWOk+4T9>he}co4s*EqVB!U)&3d@I^B=aiPwGDx8*mzI#K_5s$8z`Qf>~(MU4qqY77Bl$63a;i2ecxFX(%TmOJ&co#*}Gi?gbv6>CFF+ zBMs4Uwl==Kjn`M(oRW^|;)2(0!_cn^i6IwqaXOP0B})B0C@3lMyDn(R4>f`38+2Sc z@f-g&Dl2*Y>8t#_Oo#c!wQFTXTV?R#u~}Z?@ZXf+t%l(gOxY*oCTrEk-#@xxe3I$0 zc0PF5nLVW%sGwSaczD8Neh+5bk1amsJLFTf$RtiCqt)k5U*kwRt72(On7ZlKSrt-CRt zkz6z_gk1gG9IT02B)2c=l0(ja5SmwsPpSbVBz|bAu(u7{fvM6BFl$Z?;aCFrzw9UH&+T#3-GXx zHAYaFJ|E8%o}0f$?#cYY$(f~B2J^tQKU7DP&s4G2#8DEVvp~N%UbvH=J~>96W2cLhMr zQ{(old39Qp)AnX3m|(cgAJpP^07(K)H5hqbe?sm0lA8Sk))T}V0ohPoUU$y!Q8w6| zaT7+@qj|%d|N1a+GPcVDn9P!x=bX>5|E&&mecGmB3@K6DKP{lt)$5582Ypl9=%ki= zIhsMkU_>hly-(H0=liDfs$a1-b!Etd|HE_pPe_9Q;N!24lQ-h@w(==+V1c)VW%~$I zxuw%D<#=}qXUgi=o47N$`?~Y?*Pl&0AQCTwMnuHOD3$~w%6{vs!gHV9Cbp@6O?h_U40SC4hWH8@!y95D+u z^0XpY^v53N<4D_)oz)^WV1}c{U4l1RpawK5{H17pMA93wafT?hAUe$bAh0nvEv&ts zp}PG#+qN%@*=Y)#&-=mNm}!wtG1x$fGBA#%=f_|@e_{FsNCBn1wQmiLV*B;9eFV}> z|98m*vC(w5*OznyJI)~ulEuG(mY?-hZz~EF3UAZh{3E{q-0iRqu~;IK__L zevTK4uHk`d&@CXeFam0D!PaV-#MRiS*+)7+)(H;=xB4yO;>vidP0s5qkFSi@-|JDi zFIs5@E=1`wI5rqvpKJFKvz3LD^s&?>xKx zBF36eed%M)d^$C6B==rpJ)qGXHnC{jk8>F4qi`bu%$qA`qQZbRvStU_mY!F1FNG!@ zxU0$_R#W0@47eL}iKwPO0X!<=OP!M8USjSMpOGNhotN7uz1{E>*9ULFF%&zK%dzRV z1+Yh;Ir6>C++&)sp&61_e=ir5z$(|lQH%@uOia>mC9ow?GLLpZUAhFS5eE6FGTY~O znf>Kxe_U3oMzeg3XByzZYjGZ+;X}!~?ZMbEAj;sU zw6H$^Ruwo?ob@UqB4!bI8%8l0zACzQD98Jg_Lyq z<(4kT$A0I5$ePV8XaMLL#)eS1y-on~9#k87xro+}CN*l*0$(RjppDr|E z?oms*NtCrIxJEd_(8N~Q3|U;m*|!pS;zm%^mCojaw2J!)OP-yXee)5gu&_v8$G@va zde+6Gk*{T7)SOhA^khWDVr`n?gI=}s_z1O=e#-2QsmU|wd4!r>gtkXI&z*0J59fzA zsdd(JwGU-f!zE&e%sL5{<3zg&nI5I-L zjIJntqz=%;_|mbnBo5(~WhStZY=I$>&!)TA6xcouRQJbBNx*`pQ#7F9BCkw;KRdcz zjaJDi<_hIJygm~k7vQlZP_BZW-!5DPo2H1_{+oUJp4xwIxHTYvm`%X>G1d3qhkgQl zL3`ZckK;QSWxAo1;BJ=VZHST|Jf3k$Vv^ba69`Jo#J>Rp*JY-RN!$WsLf7pZ7zX>< zxU7W5Sr~DrF+M8`z9GJ1t6MUcas1f@A)lJ`EhL?Uys-Aa{d*HZh)ezbcZ54 z#?+`3oP#ni;C8o!XQaJvOx=BO%Ch-^pkD0%#LxY!w(AU`pp1Vb>cM4l{;_8iJqOII zBz}dSQDj-A9{|M20=agK8Fa0p`Gz=0_(Zg&8rTxZlRH|O!xhJ5SqC2KD<9eKnC*zW ziPCFi<6seVgh$VXfS+hc?XwkrR~qEa{5%8CtwU!3BoFF`OX61SP1US~HRuVdZ zV^Vsom~?}>8=ETzSm=?EBK8kVoNNt%HQzc9@y+FH1gO({1te(r_ec8A+B1AfFM@Qg zHfdq3>5cT}EEX|6bdF^7Lr2Vjd^vdzZ$@X8Kc5sdFf@oWdixOyljCz}J^!-MoAd`f zuC#HJIJo3mxs9bEsX+hZOP-M3GrLpIj6Ejvi<}sSA*0sdyn7edZfl}!W2;-a=qYce z2_dFTxkRVy8D~CS;S=7wTY&MED&s2x zzdOPS<+>GAb*<6$_tJf@@Q_;UufaSRy7jQ?L!5z?IEOE>U`uqPW(2EBeOO}*Lfz0N zapf2D>f=%o6Rg2$p`?TVHVeFmXPRKKOmHDcJP;+}=Q-i3es55wl!E{Ri747^Wki!v z+{F!+Nw}z~H2wZ^sivm~cV;)1#s+B%MTNavGre6qHle{K*4B0nE0u9Ou|Hud<7T#) zl_gec&7sD-AgAQ&idbPGo@Q&m*o=?$$LdoEnBL0Fjase4?oECAVc7-v=vX z7pdYfevps@N*T_N#w&8G{)bA|qfNd&9o){0Oomz6+j;$UulqaihFXCBRe227tn;h9 z{`T47sflhwv}b8TxZdfbRgL{X?Fn{%^j0jr6hemq>b>*|{*BwxB=$a{ZjOWw#Ki;U z3`^H*Tu^?Rl)B(X=GHgJFTdUJc5n~u(1K@PFJ~0_ZOX~KXEz(OVV>cePhN;&nBp6Y zPygRDl*G4Y^5WoCaC%9*_+NfyaZ>gCq4PTNYMMz~q8HEP;WEWgRFIF=oWl&Gnd&6W zm>6YXCIFGr>#PCOiqgb&i!SO8pgQhmE(I+El1@oPc{Uv3jrW+TJAC;l=~{a-E-hO# zAGj1`cxnIT!CQ*vq&xJ6JApg%Bg5KFeeQG(R_mw3_4-1Flu!aBDuLYV1nT1k*vSHSB8z!egq87!Zwa^QKX6ma8tc-t|;o~M1T=| z{Q}b}vz>PF$rg>uq2X-75&!=KSSI@7^P+yK?w9!Ugur%D#z{Xn-5W`m@K8Keo;e6P zcJh>L+v@7Qj)W69ue%KfgPrg*(a%*&Us0-sx4-)Y;wEZ(J>Tf9W5epw&@7}+i?#*XZF{Upx@a~Gzg|Qv}a$bAmF)U`*_qOb>2ORW#9*bi zv}8B#9aI{l`F zvMOlMmt!{nSnS;DT51H09Lp0}0X968&-+iLVNaz=MI82qmifs!#`jC(wi> zL0elzS_2kZU8sX|7I2#=Ihy%CJ$9Cg;cIQMs=cgOqi3fWJAed>wCaAdP+-@B0y|tY zHsf5iw$$2t$0O9PuuT^S^CV(=CEZoY6sP4SpjJ_axwD(r`*Apv4DKz@$apj`UXx z2>lsZ&Kl2!%YGS^g*i5Rf^b(!A2!AO$}d_ZXPRHMzVL-g8)G$kxb?<1h>!2hKhge0 zuQrOlW`f;#y1NQVdDnLX^b+B-@kO0fniCCpl{Zl0O`+YT(v+&SK2;T+mu|r;Coh1 znS+}Q->i%T#_crU86|?4_)6YqQSPI5*=X(^i2ej)y4J|J^2o_#)AgVfxO;#zVvfHvbrWXdqErafUclzP(>eP9h&Fy@BDz&JQ_ zlXclLejvU1@oZ#G?RtT_bB}3EFnww9$6epN+#OFTq)gqigFBdh+c1XEH#w1Tn$?%l zx51l4(uUQl_(t=Ili92??j=`VO2(`!(?|R1kov@Tc&5DYcNCYG?Vqi=8i_vx%Q3l! zXIleOmiGqf)959{79*~mil7Ih4lW8biOCPu<#X!t;x9V{+L&0rx^a4cfPNCpd#xBv za-G$+EYPfF<@^N*K?yt}=kP6#@w8l3=Z+lw3n}yd4IA7ifCx`>dzEAnbqaXQeuUiO9%- zG#AenP$##I`cpdw8<+T1{B zB6SKBQhF;6eEP)O{*El$@VD1cX>iT!A$V1`+K^%3LLwb}RRK^<`lx5auO%+415 zjz^vkPGQUtxWEU{ObQ=*Nial2dZS-A$bv#4&co614ME;f#FE>}5!kV~IP9pSv>*bf z8lUre>|=A+R2JVdBf(T0L}e4}-}iEy#VeUE5dSr3g(DnvXKu&}_Inpv) zFgHYBg4RKx-VQR(NQU_nF)upW_ut|!Eg$@e-{;g0^>V@lu&$mwwwI6D9{%jSatssC z{Hq;f=k4#^c*!(i9cgeiLzE0XM?5OQc8PWG{tzXcnHxY|xI(SKM4!z`{N~JrdkS;U zzt~;c8v7uAzmI$o6C3|^+b;$>nla^>t#eNxol3woKV$U$Pyv#Ermbspw7o8>lw!|I z8i*g_`&7&?#RAV@f#R=|O$yE!6`v_aQA#!hhox`4?E7o&mc?VCVyU82RNgr_rn87L zVl;)NbU5rJIN&2yEv+?IxynDCrxE9)=1xD4zotLIB`!_BpTGEP`ZN5s5{o-{#PuNQ zWQi@4*C2P^XlV2vv!_HO=s(nTt*v>UDFBiYd;5i4m5oemjh~_#xVe>@=FGKoa_Y4! z#l_76LA}A}Kz`R8T(SgQhv@v2oQK@m6H~fq%a%=VpstmnhL-)oG^F>M`a!kSx->{M z1eO_KXV*m{xzxYx{g@obL*SVDL2?~O?fj_$-@7*t4bD@)Vg(^G(dch7Rz}8*hN9@; zN&i9IVmqHtX=w73aUtd)vovwqLJUVn8*6&CeQ}R`wiLFp?)vFlW@8)p(SG{E)^q;>q+Azc?aj?AARy+X%Fg;uB?0DShG&p+_n^KUE(HIKc_ELj?NbV^V1kNBs?~rKhQE|n|23m9u(5>1EGEtwxfgHH=R4>0B zBW7b9^>u9;53F6Vb-Q+8Qtwms3hLB64re%c82qJjnO`-a^@>5t_bOuTxqc<>qN+_9 zfcIVU!fjuQH&!!Ww*;QSMm=&J9z1c>zI+o-dlp+Ua%#{lQsq<8fPsA_smfTH_yIyN zJ|aX;SnX&l^NA^681tPUzyHp>aYJ+B!u9abQ;~k8AFnK5^V8chPFq;0^Ma$m0%yx~ zeFrd&1(77e?2PEiSqZLL$z^OOqKM#gb8h|;tZ{shnx$anIRD_s+wa30@JM={wXAai zu27W#@>=XEn24K;43F$j1hlcoik zzAhJ^X>!?wL9YeZN+Y22x z?Q^85%hyXD@>cg3r$5G^`_Mxi1f+(LgQUpu?x|V11#}Rqv|APSkM$<3E!VnncW^lf zfR3JYbpxZ1Vm)dnQLQ)`zq{gYNk!GK^K!2wEv}aYH$x6BeaiI+=bw_6bRF;@f{v!j z+9Da!`$x5u&ZdTrrlaLfJS-(LE%#%zd`tj!Peyc?=8fCjlX{Y)y?pDKc>?cew4^F` zuokX*-CrWdc{Jsi*E#Cw=uSW&YBqe$F?E(ByY5sh zCP!=rHNTyjMko|IeLvKBUJH6OXHlQN)!Kh(1}WCjh0)0xaqIX!)E|%WR4OcL3^$)8 zeaN*$j9Sl=-Wy`R$l|HngC`3Sr%O>ipyAgIx$_peIXokKdM0l@d3LX`=e$k6%4hcn z<-to?l@GBSr_?WhjybAD{WM-+uyzN_`ivNcYdV`vumFcztp2A=r36W{i=jFbAYwhp zz2Znvl*!KZXpac* z7-0cZYIMy%_~2QvSH;I} zVvM;RUkQ60@LV+x_ob@vI_qmP*u2MBMcr+06Se_YmBkzQ^5mu8j~%J7(M}2clniwT z>)E()U3QgpkuPmfp$#u7&AM8{Ce+`H{gLc%D^42|>>?9VlhB#wXLE`HI(BsW&x0I?FGxI=p z&bBCMqO0(rd3{bChSR9gNg-<5{%qdYX} zz$m%iaJvWa>*bGBiP0b#N8WQu6eMY7kPIB@L%0T`!UyBnIBc@s2rxG{Z4bPZX&VBm zNxAQg%YlvjWXY^V^o_wm`kWwW2;5VtJ^n9ORgHZ#o=;k4Rz{oy1imW9iKll0%)U+U z{IwN#a(Iu27z8IxCZ%5WoW6VTL`qhRnS9;) zq&PS-+PHR{-E=snpKC(9lvZ+Y$alQ<&APG;75!Fhejb2ozRI0?^iHj~mhT>wl&{|i zR!CR8!c|1V)J#uhP95CCMeo=eGwksbUIJo^CWn|em1si^Zvb$VS$k3fxE|F_XBrS( zzpfczED+qM6skYElJ}atkC^iyPl}|=@AAZ4>0L76;+DQFHtY2K>qh?WC}Q}gjkQ1M z2e>^pK=l`?5wB|Y{kOj}l>&)(JK-7!h6!88Dwn<*qD z^4Cu8f~?F!E)V)HXfkN3?yIq`0y6mHznjJwb3l^NBsy5e9Z5^w^YBFqZDvR_sxJpS zPio2@y0>qDKVm(K4$DA5%=zY7F5jEdkC$!L?2AF3WYm&^K0oG=Ct*$1qf&QiO z_oC-8T0Ai1QiR4grt5Yg)B46Xa;dH;rMwKT?mN^a2dTn9(SRctE`glkOA3rmzqmu6 zkkR#Db=cGvQKr?9B8yj7xwH(gEa0zGq=YW@&EcnYqSY^A2_b zN?T)4yn(l~K$zqJYE2EXEp{?aFZLFCf>&eYWe|;kvaK(GURY(UQR3?B_2h_@ZJ%=A z43-w&OQdM)tHtxWR`UAEx*)p*CglZUO72DQi8SxvH4~>L8_L0Ygkb>Al{b{XS4)7F z_{=&bO!o54GVW<`6p)R6aKe5q;UIoPWVzNRrDrb_Kg?7Xi8NsMskqk5eIgyS&zoLt z!5TQ@8CZ4#n_e8L!QG{L_$^PM;Sr}xy4QaRJmz{YlUp~fj*mF97^n%ZI-N{K|7+T- zzM|NAy|5JEoMRtV23mE-MC&1CE7B-|@N!1Gn{GU!>oRY;D(p$-e2%!tZllLKoV+Z( z`79Wqak0g;|J83COlY~q)51&b7vxK6sW4`kp?k&oZ-o)wE^Ywb9Tg5 z>&B#k{YQ9}1>BT_+iys_5r)^=<gZBbH)H9qy`(Y>y4)d*XLt#CMe62=%m6&2h|A}emVZNFhpvQxC4 zheD%Pp~8x~v7_31YL(x2xDsZS8VB{nVy^m>W${^Egf|DZHsyH<8orZHEePt~e)~m^ zkKlv3An9FJG7s>?t4}_{@v~4czW9h@IqkHK}ZT zQ-hT7<^iIoCvqrME!!xt{Vwf-iJ-%W#p%!R+)MQ!<~^>K5@BNksYi`EY}4=k9z?9Q zM)4MX6Mkc_gI-HqBgEBS)!p@+^!lz2tr0ZBS6O%m0{G|<>g+Cv5u zjdN3Gvg77W54DBI{BqZCUSc~z=cJqdBR>QCQNPHYU&NbSn<2z!oW^8vsiZHvES%^$m-SuQEuh55BR4&0a*(M8e{y7ylgDi z3a0IChz{Q;dV-4-?`GoX6pR|rn4DW!=VB#y;LiFa-nuzIQBWJY(woXJylVPQDQVGl z@x70oE=|8sYa{zrClUS1K|#zFJhcQA@o|+&)PL2gm(amA9W)QwPzBzU^aV9`Fe1DM z9f%mmlu89eH8_sUy1%91pLSr@2{0@T1UFZ#rx^tfus6R2MPRPUjci&6t?)tJM^U`d zE=4d=B)oQR%g7Tg$Y_J4`0;BZ&{+{EVOxhk^&5_I*@sem!7~^0y=U_IMo4l#*U<03 z4y&)oKCxD6a;&VlWA;?oOaa8X5D~(AKUm=uIScGgm04O!vOaW;KoxYicFwuv(!S!2 z(=4`9a65MFM*4FIG#dJb+zQbK)&rADdaY%Pwr@~ha&lw-~49V^%Pm=lLGk9I9~MO zAHVL^N#S<`n>rgDZ5e-bjV=U6Q#Qxq9J|Xcn1g%S9i6RR=U%Sa8PGY6#*6RBuqoi5 ziV;clrI*S;S)h6!$r!tXgnbHz(NE0(_<+&EBpkwqqd!wGrQ3B!c5;GexSI}S+qsO7 zY5GGmL+l|CPL2yNrks^v{i0p!zvZ}Sg=A!0t&uIFF?MZ3EzmN{q z-o#XVqCPd5e`PWE^2`R=Lb1%Y-fq3n3%pg+*76zZCd|OI~24mY!5j_rW zqm3`$0b4hg$IwoZaUU zU2|kDFhK4j_tI*U!I5QH=@>zPRH{wN-UTkZZ;R@AzXZ}?WY8$SBC3dgy>d-dpAvj; zfn;pc(DszE-P#O&EtZ+{5WMLb+*nswfloB9MTUUEfKU8_ZUVjf-;5iLT6^ab^iVWl zUkiheNcy%+Yk(^12^o#kLD1P>yDd$Qd(p6<8@0+rk0Qlg7BcwS=*dL2HullJ68m!-a4@qq zT~d@oUGhTvIr&=URi$;GIPjaM?kVyDx+Ym3)-$1TFUt4>eGjI<)}sZA0+Dt_6@Kg8 zZj$&BX2TU^iCJ+Cn8XOM-s6FScZ==u5jP=~z8;KCKY8|(SqXd;9Lg-%o}#AK?H=8_ zbDh>F)AK^%n~CVAbD@hq)py>lU=sW>r}_AO(L6M(2h>!~H1P>7--8HJlI4GE`VWF` zm%Ncq@2+on;HP9XAXdAoaqQdC9%jvBw*$=Hbqm%UB8Vq{f5XryYKr25>b35c>5Y|X zbIa4H-~L`p^ay6yexan%eu_e8#tWE)Y6&b{Zug#FNAtOy5=;Nwzu^y`cgkt1$( zAiPd{PzkWzPpnifTIjK=bT_TLYS!jYgf4a!;Q2iH)94n5<7ark5Ji;SPC@l1pbr?J z@hhNnA>f+XU=1!gYe}d_G=e{;ihU7C^fbRqP}kw$uJaso8kb+|&Ic?|RwTZcd3NDTJDg5if&U=Uv{483^pn6LrG2=?Z@>Yqw+T&W~8cJd_|R zoOWnI+K(jA9RPy+*?hE*F&$rG3&k+D6UQc*5Z9tAGa|#%8;8+kwS9P<`8f|}js=qZf)8mBEn<}&7B*X*U zyUc;tzBq6loEeFmdJbdDfxqellv(JTnSm+TA7e& z;3~zalQmaSrF!ARr{m)DhXFZ^ z>WT!F`hM8cQq(y;;z9EOK>vbOZo={c!e}8y^kHRukI#tr>-pU#N%qJeWs__ABgW(& z>_h)%YL1KnvZM<|Lu^Cj<nZLKX}^;4E8W>nHq-% zoDF!2e_Mwev#Ugl8rSaBKqmf$V($E)1?jLa54np&;st>(LBia-4Ci+3nUpqbAY;_n zKkfy&)sQq)UW+tm$gg!P)-N3uJ$UFXS+)Sk3sW{i2U61%kn6tGUHhj{#ZJFN&N7(+ z+Wd!@ygO6-(E04)a`*Rs`EFI^=P*v}9jsQP*|48=_lvr{KQGc~C*96t8E^z=pE`#m zwRCJJX%!Bu;efg;6)dJ|comVZK!pMffsMS+|J?VACcxh+9$dp4!=9?GoGK@e__4=I!iyW57};9#rK^T$CA{0tjKgF!oy z(i$f`@%qr_$$E}3$XZm>bt&i35qE1&LY)iZ&a(0==RjnXG#IM3YS=e5N?@uEQoJ~s zb}70+xzvpWe8oMBKK5$f53X7vKeGUkVneHE_?b;7 zuSFM@UT|yvmwp`7^na0yT$nnZIR}wdMv_j@Lu2V#0>()<@kr21mIVH54p^zXxiS(4^FD{43@ zS5G;^b%oa`P)M7T7kwnXayf>QZn$c3fS_gI4F&;yR84a9*P!Rk*#cE(sYbjYjSK!e z=hR3qYn2~eI{a~o3XebGrQq$&p&ZCt7HA4nzvZ{49~N#^emn4bLy>3U;!`%rH`E9W zIl<(=xk8y)(LuZc3G+4%rl9cmiDPlQ7!vu~THlua1hN$CgoShm1f_+crhG-hW}nw< z_Seos@X82y99sM)xc)8t*vnf)Ug8(Mp8{fg7aSE0>0s1a zU(doIoy&TPwbw7gPSev-QQYA=>5WyuE=Ay@`@|PL$&gsXft>)+lZ>i^Ex#)I!e%l! z9PZyI6=HTj*a+QY9c?|889TB6DNGKg&umi`NA}M9pA79=A56>EGCT}#zQ+)S6a(zg z3gz(XA=Ze6%OQsOjl$geeODm7v^g$UPDD#PdvEfuI5lf3j@A-(UHMjAXxzwho1%aH zSh;}Z3Nj!#IRzdLeyUB%hBT+i(!Tse?uagD#W{n-5M9oQa~8$x(0lZ)u1Bu|vI;Rd z#nYj9>w;^oK3}M4>yi5B!*Z=*p{}VCQM6ycD;l?U#j8-bD>X+nY*1f3U9SWRl@ufh z@7jXmV|nTwmh&(`GtD#zEZuEKfa%KWB=WKEv39G9)infUZM)~pOnoLe4>t+v(LmL> z(5U_m_YKG|zJ+f2fPhhuqD8ujInKMSiG0ZD=|dxRC%vYysL-PVExxQF+Fj~>*nOi^ zHNk`~H9V=9$3h2)fCU;nLm*o#d(}kdKCu-^KUvUJ9(g4{SH)lcrlBjrjgQ(VsThhr zI=*ihQ0NgSbRtJEdyc*`mYyMA3Oa?8aoYzPFYiOF0gJn5v5eIJCw!ZiIN*u2YJAs0|>zm#;NtU8P~R= zV)_&VT#0^+i8jQPgfVqxUcN;aaEfx}a$S>4i_y_q+J>u@HU*fvbs`{@%QAgVyAP)p zBR%~?zwuh541jck=xWdHFuu#~Pl9?oYzhqjc5Hyvt_ZM!0=bB=y#^~N2z7ousj-amkk%UYBzqL)^#^a}$O zoiZZoD5HWmZ6{gmUrzvBqj8A{TE552ybyig!uvIKPgmVXgg<(NJFdg}1szsS;~;iY z>(1N|pSa-qNnj%pX6#Jwd-sxK=8;T8U@_E$GTG^ef&w1n>>mKy8ubGGOH%5Pk_UB2 zE?I!RdnpW76h=me0{<74Jv!U5Ve5MdYHf(trk zcoNqOCiQyzL$)Zfg0x_)IeB@Z5~UNILyA0warMYuPmkVO#+76gP(b@|jC@i^CMCgQ zaOM>q($UyOb{=mP&eyZfrvfMFy55rN1;%D>qKA@45FEFe4h&EEf)a$a#J>8PsIDs9 zM*y-^xg0*ncclOkn&PQ%YB`P1a-truXi!o6p*r)!BJz-S$YHp>f(rXluY{U4)YbsG z>-V6xULBRj1eGK&DP2XfH$B>RiXr6&CJ#R3vyhjHXGC|gx#&j2PO#}@CUl#{`a4eL(J!5}I_eC-(vhJUQha17W~)N%stK-C z6O<oB6LPW50DD*E-(VFx1xgiYfQ?jk@M|Yppmju0tC|oJKelrhOSe zwtc-uIcH`qpcR*i%myl1_M+HF-2l^{a%*0#AMgNnLT%N=HI|R1Tj%CU)h~cbhP*IU zw~EB}Vc}(L8?2UP)hn6ENd7vOm1=Hq;KV}tin7s#T^&PznM3y!q9LmJ_QfYs=>IZsXI`XniDGuCvoo7IDi7nx;+cn>u zAr0b@l`{n&@7Z6}-f8kG&&G^|YlziPD(Fd;HIbr94%l~NXHjLKOJ}PokNQMl zlU8~V7jB$Fp;Kv>Vm3dy0jWeX4+t(4 zPd?*He?&{dld0=~>D!_gCop7(W-ht3BKflk@RyE?=J8N7xA{g&A$Q+nnVt(S71$`I z>oYXxNwn>RgUd~Ob@8z^^la30U)l4ZahyOUrH1KI4-N>bD+IPo`Q7^Tv+*)bccOpj zUoVC}^roQDOps^Y&ml?Dflf^hYU>KT`&ZswA`!SnEN(;uF#7XZQ|ThAIdr0nXaKY- z8$^50Zn3zT0xSoefs$*%+i)WU5MxQ&Gv>4ow@*lJpDKDkC4-0_Mat544u#yl)axms z-RrydHdBD$Ql?mt%3pU|)2oK5wJ}~{0cAqR9r49M)8PHL-A`2jo;H+!q|`CW?oLZq zd!$>Qtf!|dH-MSW*X`4Yw-9&_jhE67mG&AM$`iH*w^HDVgY6=y(G%PzdS8aNN#K4? z*pZn)-NTv6+M!T&BKgci?;?2zBf^pg*fjH^I7W;(HeNI4-+M0f8|oRE%k-yNSyvNdkfo4T41X3Wgu=krYq32ZUDio4xw75U!26NX1v zkHvyF<%c*yA-4bO>Mp$eEQa6&!x`@8hz!qfVD5DD74}OJsb#Vl$H+a&e zX7JpTje7IfX?{~z8ju(0c<>+@vUBhI?ldl)8j)l>|S%A;#PpZ+cr)5BCD0z0Z+ zL?+@RqN+eO=)|v;*#Ud5K9U=mghr@?olCA-2eM{EdBnX_ZbjP=+J7@}IFy3!cyT1I zODB|&`rYb3o31ha#%d-EfE3%s+g4=fPnVNk0)|^ssL}qVb;|gkx(FyS?J*gc`hq`L zLWGar9+n`so& z_AI=Gz!k49&R<*HA%>b>YG1ea`uf|1dnchGj)JH-0=fjUkYaJg!FyyP>{3|D8h;h-iPUDE`xoQUGkd)ZmLg!BrUfOFx*9f=;U5je=B!C?) z=>e#5H0`*t_bWZ%dPypb#F$6YEL)m!W50k90aXKj&CR=LMNp(LWdk_E?X`X)Z2f^_ zF?_GHFI@`^VfxO4Eyb~K^m;s@f^{eUS~{sMHNSor(*Hk?v?H z)X2V4tG7&6v)s;5+BO9`VjBSsbX1m4=h$kTMVZ~dXJ7mU_kc<9UaEqLhC<09=x@SJ z;LpfOs-(R%KIH6^uBQkgAXvMK>RzVhV=W2!^7$+@}FvCvRy@P?XT= zx5*?^o|tL^Gu*y>=9X*bLBr^XKFUdf&!)>R<-IR54~HKX)iukNtsTuO6MD-S;GrUd zQc>b??mMnM)G~?ejwgnzeEYLM36)>1uPl`L3HBy9Ug=TsvrMR}4bRs<9WZg6Id@## z_MBSn1_OX@gPj3>Pc;w^Kt8Sp4zx4YgG=>qgrmOml1R0dcyZzR?gK^=Pt$ zZdwZ(gT}4KSGgF=C&&IP zT-+#?d@v*>Y1@}ZzWoZN>?bVM3Kb%*tO;__vx_J%?NT;AEHfPoCp$(MtMi<4JL{bM zQBKQ)cdcH3VAudfGa=DQPy9wnTCJktAj`!G+Xr}Kfd-BSyZ}ckp$)E31Ks>tAqa6@9=?j1|L=NI38wABmspq!4DMd@A^^`B=#JbPkq9U)wgQ9pA!v-6%@&8t?DS4wPKoI=Y`zCKGHx?+?G zaOiJ5@vaY@j(LAgqS+opYOyaxCU2+S5Bm8lvNfZdo}PY6DEpKxNo6c4PT>p~xY4rn zN}&*&_b5Ee3T4CF($^qa9t$&Rft1H>7F01_yz}~zp^ulAiVzeX({mb>nIDLr1PG9K z#c*8D9hw^9(3`tzAGl)1(pk zs|Wwy4AR=s(Ml$(nGQn=iYe4&9aeh-$cI_msH7pwLpCEu567CKhLj=;tE-^;Nx>8E zeMUBdKK~jr?P6hh9{$-c79C{^?RZx43P_E@#>*zD|CE>#?9%-MaM|t>1N?$%o(q#~6UY0~yPK@u2lUT2pGCp23#cZeDi+7}{@0lNt*s@o_uDBf|L(sg+Zp zJ>U&UGz?0B&gDNnR^yXP{Y{2?YQ%@`IGvna&TKiHf4MO}a#_2RLyAMjH-0`QF)ZJQ$OC8Su)J?CL)`_`?7*-_l zZd`NSL@w50ZuMiEPVCvx0chKxQOl?94NbRln+$3NNWCbe>KQwi` zC9jp5?RT55Q(78BWjTH|h-@_xIM#d|sI!(m0G7$z%mw^72h~Oy*9r=Q7RK~PHW?te zhOjG*iXht&7EC#|*^ke3ydBPxd%iffZjOw|f}f%ui?ZjCS4WjUP`R;BhE-2fMM7##?r&&su&3N1GeRN<*{_x(kfU-!O%_2Z8&|+nQD|@Ywv257 z&9U7OYkl_}7e1OfeEw)K;nKXSd-j;!SyWCn-8BlRu_7$;>Mm6~nlQMD6Eus5oWf^s zH>0OprgTgV;QXt-z@2jzyi^8UWaa%o9RFdtKA$vsZ&*g=-s6^m{X*93vGTQhh=##b zO#5F2VEYXXTSH>rEfoD?eBgieLcXoHH&67?Y(kZ$8BKU!fPWw^sz zPwj_~rT&Ny<|fWXOhfOZR$zo@bV-zy^vMeS9aS02!uor}rA(iu17%5q071 zxB(Z@F}_CNjyV!(Q1uUl+@woJuTh@bb=Pj$Q+uQogryhYIIv%-5e}DwU|G4~+tzy> zbnr)k)o%Qq!{6SoiURd)@cY;6Y!?!;A|vYWRu*uI){8JC_iYLY4m&+P(sYP?_ZH#_ zoofqC9T-|JoEce&?_SFf7i~|=ee28`C)&PFqk_1w7c_npWZ?k5uADjrD!a$O38`=ajF3L5Q}B`up*HKn0rma=G`?e zuk`s@jsRB&{HZlp2ob37QiJ^hW@klDE`-59EiM}_-Ps#pevKvL1K?F@M_b0bi7v`n zoejbGS<^5enBv#2jCsm)S3M`N&Rptfdpd*Vz+Q?jDC#zgvPbn&>noI4<1qZA=>b)p zLDXoSv}?h{4-&5kI%_m4>3R*SmX|*}ZmkaDkzh(jmHVvfPH5!P z;-;sX0l$k{TZZ?h-@c-1SL-cp&DLQbDYJ7}m3L!-P&D|B1PTTT-1~DPtuX5*IfBAH z9yPcf={I1EEf@vn*BCH%7zXVg_0U#PKd7Q|BjSWH05i)0@J^_be)rQ={!Rxy6}gI3 zMfA@`XndI(Uwb?%nG{u6?ygfU(8~&2)M9J*(P>CWMnT7D8f`xpRo5T!jH4q-ze&&g z;VRKBay76euHM3m)ME2MYCLKh$IFjCFdh$*f)ID}ld~|lFC}6rSjn?_xHQH9A0L0g z!uI}A&?xYKxg=%A=#jPVf>b3Yo7XR5?{y5?H$qB5 zNkTaAsirn~QS<2@3B@PRBsfHue187&H&!TOfrNBAIRc=q3^Iux#l)d@7r7>C&|w1a z{~ifF@|QDwL;o`vJuIW>_vS)V5D(DS!1r{M5|&f#3%EqydvwQQWhfABd8n@W`ByW3 zt(ij0d%HAVf2uxF`c3+@`wVi;x~)jqUiEerZqh~(`dWefy6lk?=8CKnD~TYi396A{ z0bVdjA`%m_Q3e*emL?Fp2bb)-33)pv(J4HAgV35v(jUlkWj#;?9N0v#xVNev*ry;a z%P^z%hwZSJ$>(YOHXW7q?9b^AOeiakVDK^dSM%V{aXjI!uPen^3zu_Qe6%wvPJP^i zXpdHs_TVFzU+n`OfBE=-BBl5Lsrix6wPj!^z_&P_#a*I8W{`3Co;X*)Y7IwOmcWe* zGtrh`md6a_f-GchRo`oLWuYL3;=$hD>RsEz$4f_J>fF5`+kQ$gz%48$+ZwRPQ1YN| z5{@Zr{|Bl8u{}C7*meZ|Vm4~)v^AZ_;%BeHz*R7VEsp6DjXOTfjN*c?m96$IWv0IE zDDj9iVgA4yLspcFpvK}?e~vlSlR z^#9@GyWQULdvoS3f=P|u`&am;?EaxV;DO6&QT3Jrz8?j?)wh#3h;v-TBXc?6eXQh5 z?ee?dFd22GrJZspE#njM9}RHyXjR?dPkDC4}LcrJpSMN!$Rm>aGq>)>%Wi(iDN_D)eQ+rIhl~b^kkJ7YGGN8&pp*_O zK_2f#Pcj51>T{we83Gd}=JmkQ=v5*d5F2}v99HM-r4!T$tWPRW$jtkjA(4)C0LJub zkdG_#f;SWO0NGz$zBaR~UR;xN-xs$@xUh!@NLHFsp?B3KPeu!PbKM+xczBLnp#uLH zK0dxX*yV_T;#{0%x@c3OArC382%X5&$ml12l8GHb8SC#e_-%iqyU+ z+sYwF@O@Reg?fP=rSig2QI@XuNfv&S@WE@4(&`Km5-_P}m12ttRmhoXjo_E>z)bhO z{)4GX7+ZA+R;g4bSNXk-J(3hbXV7P88*9mU&XRuI8R$vy2*ZXgNtQ%e;dW}yGu9kV zjvU$*FH{@OwyMVPmMcj&{wE0~Y!jvDnNpapO*A^MaZc>9-9j*ye*jz@W+xb)i2IB2 zQi6aQ+uHI%1PnEn6)f*7qs74YIB|EwvwkrU#0kloG7Z!qM{#7*FmS4p1zp?o#rQZ} zmTj!-6 zIh4I5RK>hujB}mm`dX_$aw7)p=r!xWZD>C;|4FoyTcHwNX<=mR2<9utrf)5X=2!l2 zMfx8N;oF6SOV3gJJAHXM{7F-qLZi!Slk_&DMnRCmnuMccL)C9`OtOm8*@= zHV;&JI^a)`Fr>mEZ!Q?X@5mRtjyE7i(UP?A$5ihQ66VAmle{Eykgq$@C|r zkX4GjvJQ3qp-h*C=4GR#;S7B}u}!mv7GRh)r0(8BpN9A|a68n7;r2e57zFIAY6Wr; zGX%X5+cIe-(16Ho!1;&Um7(0D&kOJCW?7?JhEz$F`5s}R5b+6e>IM#!dnq@*k$V+v zPOOo&2efPsxQ`f3+3^Egaj|fO#dMfxhPa{c>#hue^94s;ze@C=%!q{svR?|AmcQ*Z zylI8)j~V!PUVe*ep~#YJvC`-g-T+m(NE26Hh*=AqtYIXj{mr56omw{|y>dwzl#XA# z7;e?-VN~v02EEk*b4>UTR>Qa&$#|(R zmPbx6M+=fuVS*&P(Rs+*$jGy=rzB)466(U5T>dpL_7whZw z7*aa;jck{jWHMs4bE=Gl%;d7K;qjilfd~~c-cLC|&!u16f-$Rap;Q)-%y{a13yduX9 z^fgxn&RM8$g%d2?6EP-zBVVDJ?k1{GwF#H}#w8Boj?Xft)*BEAoWdkx?~4|Gok9z~ z>#8R6Bt^`hlu4#l@>W?|Cq`XSmqG|hWi9r}xp~_Pr^$SO>+#Wx*jWTWx46gt@G!?6 zR#t5j_|#ZbAu%f$IgW$p&N5bC4jhXOhU?^qeoz3V5F#RXLO^qY$ocG=&1oU6RhkF{ zgF5D;HqW+bO?}c#NQub?lQqtzX*wudi-x_%h)33S+nIvQjMd!O1FesWc1F`$>eY(* zzwtDvsj7Ibb*u}JfEo^|tD00MDh}jX>CLBPd)y862JEE^|E-c*og)9jN+ zX8{dZik?m=n{htzQY{rvYC($%v3*L(*MU=Ieh91&ayz7h;w*d`i0uW{dQ}t!6~;eS zcAUJXuTDg<@@FV1-Q=l=F@=!%b09$*cv9$1O1gNto7vOi#CVqra!)n&TMO)Cpdi5r zDeMWRFO7bUu94Z8eXtb$elyGuq`ePlK2CT<;H$%@HYwYLju=bPgKIm0{#?Cs zbf7rIL7WBO*ju*|k|4>af|B%SNh2Uay>I0t^K%yyJ_=b3N-~)X@XRwg5eO$bciGOT zBb}E~T*uyxh4At6gQ;(kp0Ci);@=4rC6pG@)*S}TQkl0#O?oZhLuKPcD4@3J-Gy9i`h=?P z=)>^X!x8|eywn7l{- zp%0TQ>*D5FSI6&XUGf4wpZtU3esv5C@ofV`75T^TPaFms06!S{)%K&6K*f{pXspQD zQ2OKd2k#Gch@|iaC!OAWZ@DF*8fQad|L-)Zn`2#ptA5POZ;~JKLyq$?KWg{E9g6$0 z$aI`U{CXAD;?lwg-39lG{6tJFF_)7|p|0^eGMWTQI!`K&T#vPfDh{*@?jAmaUI13r zVR&JFjGY;g&%ubaKW=J8PDk(e{<8DQ*RCW z9%aIlPNK7i83P5<-XLfBRBOz{E-2KeNL7@|L|tIMdkCkNf=7Im$GS@;N`%Di2Nnt5})hrjM-!q$c6C zaYzuW^fg6dC0jcS;uDcYTajdQ!;U09fV@pN%Q?**N3tQ=`D0W}9_4nbC#O*s4h}~* zC1Tod<+8TO<^lGCM%9x^TZq|;a$}pFUwk4NFMnBx9NE2g`9?nNtwVQUiWE0`^q5@WgdOWCwUuge^P!& z2~C2$^@rW%M?}`TVY*4kB1>}+75)t$%R1r(tWBtI^)l} zJa8XyJ>gnUGAe)F+~{n?;5~n zacs|XYVT^@Jhnqi4$ahlP}BulzMA4$KxoMiDCtMI9DnNsIGq4}{ts=pWzEc^aGehlgiA$|FAF z;q?Vi_283xp5a{@bQDeTV;Z*uH?CI;H!F_fQPzGti`s3dJ3Jn*B`DLIgU#~*d;K6L zO#}ER%F|iy6(kME*tbBm-W%D8mm@v!a&IuG>aVWCNtR!VYg&fkrk=X5vpgECH?OfD zN0yex1I#j{hO9bJpWQQwPw#m)4kXYZQ&D}IH2z*p22KAZ6^8P(0=MWR{1Le{1ilVN zWN*4#@AL_otcGdt=wPV!yJur<^CH#%GY5G|BX#I70>nsECr09h@mGoCxfW(lQ%d^+ zP}#;XJT|m{2p4XYu0_9`u_SF7Y%4PTkY-(&yeGWbpnZ+0YVl?D20=$-SKwrNF?@}z z%2Wx>{J0jnPc8VDI>Iy2dDW}Z{pQ@dpi<7u8z;;Poitx`*60v${0o*}Bh2U?U+~K`L`og{Qdx5c>ryre|ZfO#Lw@Swx@St+XL#*_Rk-wmKYetyJXUSEJ zdF%*qRsYXXwMu^bo~|`zoL%DUT{mEv8!_$uBTcLsEAh6+$x49bYtaC@y_5 z`>R04%$Z+wQ2 z`=#KoR^z%^Xs#i-4bN* z>|ZsD*`KkjRY0iL_91T30K-Zg#n5*Z0lyy4B{U7xd)IlbteY4iV z#U;1v!-B5p{W?}3--Y=CP61jjc^P|oO&xI0&aj8pb73;emwmfF6!YuwY4+iMz-72r z%o#4vUA)aUN&lSSRKKuM{n`Cv!3Qqryv@h4BoLqA1LCE`I-4YFkm!qhdjynKDB$+N z34DT8NPuMX&=9Hb-`>s;ni0EWY0GlkOV_EJ#pWou@CW>q8XkA!x%p2e$q-2f%cWA? zp_Ct?H_>sloq8kvf?EcliwGq?qCeJ6DqD^#WEz$Xe@ci>dJveX9iucLUnqb=U7YFQ zkY}Z^emf*%qoj6mZ$14pWi#E2%P;&KD4@*B;cV%_m~ru8iQxRt0mGW{anM-Igx^)F z-l+f3i*Yr81=neit8#{RqyG=yOoRaqdX||u*yik!#knm~|!k#aWAKbYuQk@Orwem@~ zJRc~|%;n=EN_R{sn|#M#nQzCALe>Fw*(&eprA2%|Kl?qK+nlUv7klYv!S;il{mrdO(C2^4}k(hN3&N+^HY|HR8I;3)L&kGW2NArmLac zYcu9=z1cu-u~`u6Vs%8ZuNeQs<9VpmhaRU4(Y`lr)vK6_*n!dW49=CGomrW zWDa)0*YtOk;TZ$E-|GyhZ)arkt{<~!Od_aG6V{PG7SDlPe}y*^tYwSad_=qnl7=mr zxpGy6Ml?ib!OR38e9cfKo<+He(B3HkcwUm#Z{7Xp%+Dn`8nM3LluYEgc%(T>= zjS4Re$g2^oXzzlb()}Uew)c8L!kzrO7y&K1RaW)*MSDenwc;rsbghPEm>kj{`HXiq1Iu{5qYuL+^Un#2M_C+uPStMU4}y zt5{st2`}Kww*?4)Zd*epUe`BL`K(xJx(4eA)jexfW%8Mpa+spy{_4@g>Hg5%2hSG;ic!a#IwlvZ9Sd_&F72d6=}5h8Lq9}0Sn@16doi{_X{Qml9>9-^p}A%U4! zamomVX4GqDa%KYAY*-<8#uU*^AmC#^E6ogx=I~&>z3A#4t$39uW<<$3l&16 z9v$Z4=uxkPMc3`PjpPe)Sharc+)|m2LrPY1$?0jpG!^%Kx>gBPg-EA#J` zghZ0u(bZ7$ekwnesQ#rmWy6nEaXO7WDOZ?#PSd-O5p|Im+~=4LiCP|PE<5kPRJGyS z@a!r&=hb)=4yU}U6>xIF)Ny~!y$EZt7uq1u14{u z_cWl$fnXHQ8y~PMn*#A^kw*5bv#LpZ*gtc7rG0G4IMo)}f!^Pgz9UmtJaax$@aEDt zxwLJn_u99$tCsI6;w7hnImMiADN$+4c<|OsUq~ zZrFAst`{q=#sXd~A_Be_?@{(xB*SRv4+`0Td_?>4Ohlw3v10yp`xqaBw-u24cR7uanS!Bk#S6jajNCyV14gkJtQ%VUoOBkv?s4j+uSEgF?*O05VMqk z{#2os|E^P47Sm1$Zh%RMT@qXjwZj^_|WP5yA8Jz(P z<&ufucXC=7uSOMQZIC$wQEXi`P_m3xWR56satjJqM=axb(3Gn5C;G!~V;;I_SfYhjDt|;0mO%Z|cGe1l-l-gD%;r${G?+M_*|9_~hgI z&+|;>{7f!+PF*QtKDVD3rSomk`&i0gR0)cb^k_o@5!Qym-Il1P{OjTmPI!|*l$^eC z=%uRbjgbN|uT65Oe|}6d^0RPQ6lw&;ku!PDZWnO(3f-C;5N#%qjYbLcT_y7s8Xf9d zV1i&JG_@oSi{VYv*J%k+oE{=8u4b>swqT$cC~J*3&ZJA(7G+gmT#h*8uIQzgfHR03 z4veO4JKTWNs#>!shGWLlCuI`J9d>PQ0-dG-!3PMB1rLN%;AM+1w$uUGLso$@N3+~T z))wr|e^a6vQ2UK&%9DPl0*K4Z^{9M*ppoc%+1Ar@aY-tz#tp6z5$bV?{e)Ud+Q04* zp&b69%g)%vb)`0PRv2_uS52~0JjA7OQp<2@1LNU32q#l681PPIhZ;yKnDjx6`n5o^ z=Fdtp7j0hp4wO3;I&=vso|ZJEc(ftqexzR|(MZ2?&#r#4 zTBP+dW#EYyNyFOy%`0p@DPNGPu0s;w{si{r5jt|rxDi5`Zkf9TUTk8L`=AwJ?rY3Oa@vpLX{bqQdLPBUt5^2!=4Fu0fFJ}b)6;2OZ2fLI)J9<_ zhL*j2C6I@Kr{lvdcXaRPxrwK-JPNEWabv6A`tms5A6yHI7+K2h8{;4#+}r2J6M9Nb zQuUP=t#WHKyU0(1#jlvTOCgw+{YEb^pk8rdsp`tWC!isNfJMkY13X3`0_2`s13K=u z5=v~Y&FMxHS=R3?w$2!mwV2S7}^@YFTEusUIY?XHBPWQnE$BX?FESmD&2Hl375Cws!rX6-TR&Ap*Wb zoI*qak+91t5g|8R!}Wk}2yXK2fm47ggbnWjS%=F8QntCy9!brQQ-l{n9?y_Maq&p# z@&ceoJ(W)*A4aCCtYfw{K(h+4)N zKhOtI3qFQ8O143*;}W>DgOto9^lDDq#bZX=7gMfXXWVY{n(j{urMcL}5?d|?K^khB zMlf{j$~aGnc0rbaS|^;W-l9U$ps2dNM~RBB!s7i) z?Y+Y~pBaYDso-h*ON}YPhcx3bFkw;98`6Z)*2u=WBTOy8`F9G1LW4v!!+uZ=qIZ6N zOF~3?jIatBOeY2tVC8zBu z-QIT1ViJ7fw489%ySxsglMkuSUj^FcmBmg;)NQ!j1(oi!F)v^ppSqK$MR+=JI_5EURR>##PI6BZtA{TuP}QKAE` zgsYDWQ)MV*S*_1sT)rYDVT=HjmA&LATv%5b@&e!8n)gUa7|Q`6qSWbeUPlBBZ_zeq zRD!Jr+VmB1ET0i8R#=c@1sadxM#()(uEv>xnWH@6Pp!(~ti`FTRXEZRzFtVL#ZV7K z(|F|tYHg`)+uoXBt6O%`4wK4ScNq_28>gQ7qD@HYY^1!X{s1xY5LYbL&A5@L0ud>+ zvqIyeVGTn-ny;);uov=oD4zt~RxKw%NUfnedXecjnf^bmSAKx=pAmzZeo@S-#R-Cr z-;pD@F&Ep^ zS21Y2J{_U4g{;A3jitZBreAvD8#+n~W@PDJK@{tUj_Tax+2CB#rpZOPjbRi1F~TmU zyZBwq$hBS_t#%~Qt`Vrj5L@(vI%CxyszCdthk5%05DZFxH<`@8W(!$WlFv@lv}sy^ zR0SJq+@d9eGTvMQ$eLkLj%4=B9|eP>B&cLVZ|YzODvM!$%E(Li?+ABHTf2JW=5c&% zd9kS@c9~$1A6kg}!w-&WXtYXssipFRLrOY}T1hNX#EQfiy!ipPEaj#VzjILLZvll0 z^%czJE|Stzr`+<;vZb~1`Y8rCj$!V`+o~YWHE~HTYML^p%Ag+4U{Jnfd80-QI7Yhr zjJ-}sYK7%}u$Ou+&bNnC0%*`G@0Js8F9#=rxFNF$5O~U}+YfH-Gob( z7dK$ncPpEIFE%>D@BX|IdE=N|ztYa~b5LJPFY1hpF?;ol`Ja*1MlS!Lq$n(Nqs>R- zkPYAbOA4~(H}{$T z%)rb5iaQ$(g1%>z-}V{5JYGdb!mp=#9aS5#-cNdODxJMU(=?|-Sh%fi&tgenfVuu% zWwUUPAo#FuUD!GXE6guRyiXw}BD0{=c2feVan1!uc1D~|H?w$Yhq|*0*<*iMI&HgL zK0*JD)PhV%CD*;}zha_yODuDu#gHB;PH5+l7~4l}gsc0?+DW*L83b-zg*q5 zHZh5=8E-XM%j|4&alz8wgP8a34CL#_BS*EjKZ=rTx0zh-b(@0augjQ|mtDyHr4iFF zw+z^Acc?GEoMEj`!&GrMPo*&6w7-q!SQu5>QWr;kt~c6WnIk>ME!L3MdyJv*tEdpr z>u7ahfvUAj`FhQxAuacsI{lYilhmiqe$C>2W7V6wrF4BH8F8!y9FBNSuH2RhCRa)- zeEzz(q{1x^d_HqV@cW3fw?A8+a0n6-GV#2Jf!NL z5~F_K_!`yoE*~UuBy=m8Q6{UJ(A!WN#ogoXDuR|dOdha5e;PM*vS!98JIB6}%U)}v zQ* z90*(}#Lmo56^!Z+7uI9_$#9xvth zaD*>Flth(c0kCEtGGSQ96{u_m0*v0Tf#ZN$aMkp+Rl82LJ7Z^0XAUdfh1V(oyDAy< zwOm#NYHTyzURWCag_)0ALncGNT5$=Hd-ZvOajO#Fk>Z$A=X))aBduA>h@two5;ti^ z5Gf92sW#9iBT@+e`k1QSXSDPXj|*ta%gPlD1$KQ% zCLK-;rQBHdq7}3FJv_^zuBbnG<`|4yHalFGU3OEF-Gj>-jgLN>WP^5q9V_HLM_-#2$nQW zOHV*lvh;jVtDE}{{p_Remo14%n?)<<9w~hu{621Yl-Q0=*))UGRyPncms*Tu7VJKH z`7>Y4xYeU1PxI0p)W`rrQ646_6k1!C4|^{@C-iQ%h|=P1fBYU5Ihd{)#O?6OPN}`n ztE(daXIyY>d|tg`ykV6yWJX>S|FIJtcL6^G(f);8zi_8J{7pY8ej=%H0;9e?#f*2egqs&Oxf^IS?}W>kg5 zm1tE^&AJI{l?;tz_69KDuX1H z)u!|B)Yqc5Uz~X-WvD96IC;plD-gEi(u;fB$xGN~=T@GU6CW_q0Is*p&i4&)9eet4D=fgYMA9zQkrqju%!T1V-)57R8 z3Tl;ENbd#~APl5!t9W>g2*Y=cS$LP1f+^&xOOUH>W~`wLg-Yiw_0nw(w4c;OQkE>I ze2a9G_Xe+-yQ07YIlYbV>bj}y5;mZaV&`yuTsU}laCJnAp1aMSy)6Mc!@Kvs40ATzz(ZH7mE-sHYiUgmW%q5MLUx8tX z^C!d$1mpd8+&JtC_*k9C^m0(4?=;7oBpzT+PBr#NrHXCiL4G0}z0+<>{1M|mrq%)j zgJx#a_n3z{o15%=8y1OxFxnh5m$BKCU#}Aud5%={2zI9>x;~nlaMUH(k6uc;|2wqE zFdI{dv*nzgIqtLK?)7bb8;nD$ov;*M*fTGRAk4>4B9vq38osBi<1Bzj8A%Dj_3+QL zHxov6&lX;yo?(9_zMN=|-GpiHh9Z96{Uxf!Rwd12=~sDAn!i94MG~+z(6wL*r&y*> z5APNLc_C8%+I$MoOvLm3f1o;cL~byyQvJm0N*6$|B6jn;70cs>k9P~&@z3)*4vRzh z@#sK4^_U)4=*4c0hV%U9pRTJB@huzacXK9oA=*H~JO3GZ( z4K0e89;e;<;kk?sknVFzeS@m8m(q%Kn}}vn+zWTSSS%CA5fApX`SzXLZG93MCpL&J zh;uT%=uZLRkD+r|(&(=%?cI~%x=Sm0caYD@9zGx}hVeKziz~K`es}!|#gfwry}lmroSm2JeT?p`AuP+$~ zb#nz3dDJ@Gv{H+%zMxUZOM4qSlN%Ht%t)J)SifD`SzL% z8-iZJ%Ir-6J@(24+2d8-RwM(~J{g?a!aYoTq<7>Nn)Ya=Ah}3K#)C33+p& zbZM(VS8_pc1Ra`Q$rW+wSS_;t1_jLz0irF!HnB5%MWN=mju4A{RMpILw`C(Ef}?3* ztahm%Zfomo>501+$lE;i@HP;OuE0zwe-c~}!d-4)%P9ra+b|lU z!`e2ZT>}fLxsacTiqH39;ecFb#W~Ukkgbh2MUDVdK@If3WW76VjYr_XF1Eer{nz*d zM|jU8f8>ke2T%MHxwjGP&>_ryRjlw&+42)l<99z)Sa3gEg&6tkKt12uKBZ-imCr3C zA!;vCO(9pF#8#ictujs>s(y1dO@;Ld2{o<09=OC^lfG_6V1TXK0jxaJ^!6O;Yc&$d#PcvRaK3=E6r^3Y?_wE{h9r+EwUP<9du8JF+U3>K zp%@s{W}%=&m#t%abJxFp;?bshMe28e{AQqr*2HufHo@?=4Xk=MTW@mls%%~Ysn?1o>_ngP{GYtZhMnps~b*<>b&uf;mg8hO#oo=ng3B$fq$Pg%WKovSeS=7hw2Dv_=1 z&8};QCg1o(Y_~NQ5|AzLd=F=0t~RhzSGIb`%jSB3=MK$zgw? zS?wGw_uz+~DHb0;#<@Ng(bq&xV&?q(7=zIU>GQKQ>#NC@Y}ShS;SO9SBXyigA4>1~ z-Y5rZ3#Fxnfvl9$g5|@Y#N7LhGRsReRi)Cu+J6R`Z9ess5~j%+D}(fIh4i3>hD@mo zO6(mJnGNK)ESFj2jRX!w9lMD!&?c)ng|mSeXxeSXxIWWLR@KfE_UX~CjM|FRxW;TC z(WWL#RShk1WXq=H4D~@vP#;o>Q6j=4W$5#6FKD}qGs6(xqvv=;Gir8}Lsmb#X3?YY znG2E(QAJ2PB@_1c-E!)o7<%XIAs=fn?&Zat*v;ZKjZsH=jO`b$%RBO`B){cVuYhRQ%ekeq+me z*AGe$nh?efdRv*4db+jw%X5J6i6yz(oVL~kv6`THlTfkmLE3`cmp|d7^)mybAja<9 zal87U`8ayC+yS5;W0iWnaQ2Fmgmi+?HXKerL3)XVt@Eec6gk_m^xPQ>B)+BcVDigLHW05OYrgX&W@r<8x$+el<48>&7vNjF))3Nei8#Y8Hl2B9bCR6tk| z)K@8jShd;!=KQh*5)kZmMURX$9Y@oGcBR^QJP=X7Y)YY$5nfzjd#7tD^)x=&1E^j~ zSsSJWLFUW>co@5I7Q2XeGBEJx8E9jsw)0&hWAkLh4(ijY(*elx;cQvz91g6+Bx}yfc^2aY3dGXCN!5hgdqiE-^W>8Lyp{CFl-$;?vf; z6gU*D!6de^1DW;`AF~LopkqKI9e4B5?E}!5T9mFMl@hf!G>(&y1$HLZ zs)j`a?$@~-tiIA2%b}fg$a+kqb;;Eyy+i>qfji`gDK}$BZH0wfpTI=aBqQgxKo;~r z#q{2(yCyL1-cy$QBgp+6?%=jG1(=WZa&a3;G!V3?G}wp+IK+CBmnWGD5ZmF zwlByYE5w~=)0eTJ7M-!|43MDyk=ztr$=d!gf`b-erFmSR=$QzcitwH4JG^m?1&h+A zT0iMN$*jeIsM;>^IiPd`_8h2w(5o9uSg|%NY*>Q}n&iXSR)9U%aU}1+JRc=Ca20sZ zu~=h(f=( zkeQh!qY(4$%z&u64CyFiu*Yr_pIdWaTPwoDhC%^guGl-R%wcA&0d}ZmVqUEkX8zK& zbDK$Xr}F2^HxzmX8PB=!@<|az42f<|olbOV^xjv6tu`wqsdVu(1lWBDtD9&JJHF^f~gibo&E z{znI+W;vNVq9;BR5<4*sC^nUe50uJp=BDW%KGr>zmf zv}efXci-mFXiXniIft~y1OfX3xVt<#fE3z8+uru$=746ffCK#NH4lT+;dfDw0JPwN zryNnu>CynGVPX=ekCCR+J^}{mhYN#I3x7O!X_1*_yWRPk zj1;wjX?MxGi#uQCkQhQh)*oR2_X}&4g7WAKHCkbb)vR1Sq^`)z3yqODC1ok?2)Rm zznL_z(wvCbX3d&}U=O&B{8J(#MRGW8k!aEwISXW$PbqcXVdKVwN`ZVtABETeZ1X)muuNssLVNXA8rO1X?FP_Fv7-QTU#s4LWUY3 zV?EO5Cp~qTwob@FooPUQ++x(leRx`HIZdtRD{ycBhfg+EnMRP?@2Y;&cj3Ktg<(vA zigOf$w{bK=b>_y?wSlb%+~x`Kx!VH*V*1`HQ)VOpo=+ACpLraMni9LLCk!imAT|J# z{MZ(_nEg9y!0LhY>S}&7?j;{8#>fbCxRiYlm>MuCo8oB zh&x;A!19nL(8P`OH{W{yC|A;BXV&!Zz%>w^#rIW6K_A)_rPyUnGr|uAwAn zZD#to-tsk=W{nmTPT+!4MH#zJ7!6hsAqB~;!V)*J%GC=0^rZo_;UKkbAd!zQt+Y1X zQ=~}Tri4`_aa$F;Gm?Vrwdp-ptXCt7=>A0n5mh0z@{GA~yc4t8)g_vXEuguC`e9^c z@X^7QohI2K1P7n~?0|P=AA^~4#i249fS09>EdJz>8wLeUx26USIXxF@4!r7&HznS5 zm1fi0(GJ`2I=m6k@&`X{FEnU^;*|waIqNu)>62iBMdI|fMG-S7HU-KhdN>B_UqLbP zYtC#ZoXxN254(Lg-|@5dZoSBOI)@J|I?9L5m_&5SK$`ox_c9PoT6XIF!PM}!*;u;_ z6X4NWI-$MlUj5z}W1+VJQv|f&w^`7Et+8+hzh(Y<$Veqj*?IX5a@zyDZFUB> zx~aI*MYgB>pvTf!?Mi2@L*bVR)h{ez2#j0BaJo9B3@Suzr1V)Kk>hZ5ZE{x5@GfQQbnaP+gX?SW(zg^W(?3U{@Vm3;}`x zYma4tsHJJ{a|r{~HKp7E>)M!&XMMrBglsnoDPKqOZPeez=}@0<{1Vug@p7}yT#BaA zr}tkxui)4P5&#qQtBJLZycev7+d-ZjDV!lqA2B)zw*Lv4GmlANSvtb@Sc5yXqc!AN zw}`^=#TGJBo~d+=OupJ;YbByJ!4S8|im;#d)je*@?Vym+v5!Hppx?r(jkWI{XHSTG zG>4pQ4K(7BRd;#VExN=aA^4%M7*TlLweyJV(bk2Cz-?|!KLUX%4K@?}i}W~>!{nKT1|GS59*=^SypAYR^&VE~;W;*u!GHdy)U&Bn zqiEnZ+cZS&glPC9c0|dM@YB_2u?6&^{<|(Ti083Vqsax;PMpYYFE+yn-x=AFua^q2 zE&KQk?!|Nj3hc&#Gw%R(z3Q@Hf%U?wR}7U^K&k8!;2nYWq#q9#?{k&TJdM+ehHDOX zdYXlvK1T|T2aEFC2iq#9e=BeZ#r)#<1KONq&-4LrOOIV6O3c#h8lQ~ZjFGh7jyRrx zFrK4|zB43po+1Z&JjYfORxsmZVS}klFea9Oa$TbK9q>dA$=xnc!B>wce>ttGaojZ73PGmmz8_&AxgHvxz(rU_5iqvoe?y(~M{Puf|K zC{LmcdUle!{NKeFS!7SMj1L7&v3HXcQ#vt?i5VNvTsw0)%XVv zzKK8>XlQ3ZH#Ngk+q1r`P~qTQyIpl}=@or3|ENB35Rd`Y$rCo)OM!k}R|INeAHf-T ztuZ^;vfoI*43mqnKGv2omun@qi0+%sPN)g-UAg--g9lpu#rBfzqG_E8++TW@EIeK9 z!U$@4Dg1g63T|axu!BV1(b}eXRAqYU4x-=fEPHriVbC1A#WZ|r?OECX=glZ+u^!WJl=;LSG zmyIRIm%937f>U1A=#%Y$aH07VtJaSQ4&4cR$~VH!o5=&SLH)!92XR|o87kp20e_X) zsAJenA0kwIGf&NR1a@g zJJnlj1F0=M2pO+$Ye9JH2XBzbK`Ya^|cbbk+oWc1URT zm854a*_eRK8A}G+1_1fFmYpML4U}@QTMXwBEZ*jrEspR1d>6A-zVL7;d%-76|zsdHRZ{;>t^(-M>Dwa>S8@O@VX~ z;@pi6&Zapwcd(Dl17b|$SrI^5eZ>%+^jTlK4y1AG5v`U@OwNfEr z0x8B(UnRDQ#8>&FEZME(CI@BdOm(BM?oY=oEDB_$__SHGTO~Y=8G68sPTV@JzX<$> z$SFnw6FzXpQM90G$08~!3*?`HfWYhb#Z;Rn7=k~|378R(tRtqgVjhUQ@NMDYl#yJYt#5M zcto}=Q91EodDH5HK5AK_v=Y_eD(*85j(0DoNa9gcNw^#(W7@vgacXHhZf`3kO=p=4 ztq8e~Gddf?%7_$kG z^*0WI`9!QydYIpbHepp|t<-<1Wh;Z$MGi}`WQ*IQ$2# z;Ft-8%G2Cd#J{LIFYK@YCMkxLS-*WB*w^?LbpP20!=?-m7yt1tG-pOQh#EqTh%ZXZ z=!_~&)bB$;Xo`?XuCa&)h;^jRLT)>sDy66t;}&vKV;HGn6@+q2ZdE0pvb6weXq!J( zY3A7=!26S8*$-Kh1wm^yhr$MyvAvf&s#BOyONj%RRo2BWdt@09WWNDtP-bb91-`4T zCGqH-@3kEbCXqq$#mX~7W*}ROX0emHEg~?fLt*q_nwGFjSAmVyzqn{^PqBXL0ZtP? z{Sa)s{=A+7gui3}5z=iE=+1LfV|&yQ=3f*Ia>GQ^?geFV9}(X1ljlcUczv`yux6cF zioD@-_~OnK3fLcT^(c4KE{-1kQ;^bvu!|relui{V7X)^2pvSgJiFw1l>}N&v88ajN zGz8`cj=es=0y92h#a^$Nv>b|rl=tvie_}F07H#_o|2}tJh@(}{)hj2`KzRG-v;1KZ zMGV$SfpT+b|Kce7;*054`Bb5=A)s_G(RSp<;@$jsh+kEK0qj@+wG|UdZh^~ds1xeA zk~&4~KqamBP-FO5SW^W1jieycI_jhSAhRD@`ZVzf^|)UK9$i4g#y9g6@b+2KWHDAq}eUbK+A3QpqmRQPdq(bfH$Hac2i5FWLT~>(_+;sS|SDBKg@cr8bjn{gx{0;^Z+) zg66*2WK*?wnD=QHvj~XL=~q@2!K#Rr%%igDjyE>2qcE{b-tJ$XV)Y=P#=e`fN){p^ znWT{jEOZ}<1%_@mcwiO%lDVEWG)0A7Pv^wkp7bEYc7U{L>Y7&Y_}IwFkceFAjYqA< zwQ(DbpKDM`pUe-8shbaZHeO`3^i0Vp{Ft_~D@ii(lMPikqg&h-Q90S-=yA+aFudy1YSf=Uq|Qsbe=fZ`b&?>=o_DsuDcqopQ{ z7%U@vt+*R(WO~GGX5=t~{=lhW;_+gQBVj5Gvu08G6$r262DBOU9iEsSy|;DBvN{P7(>S#dO6z|ROeGOLLe*C9|r~X z(q_GYbe-h5%*t|7s@#qQ#K_Xb*$GhQ%-uaqy^Zc>1>mMs@j5^7KV$eQhgx|;HPtVu zt5Re9tyJhQ&op;bTGlT*{C{&haLn(ATi#mM0mJI9mY zigH*5=jVDc6W4E!ato`nntr-DdNdgBSBFJ&vsfJZowX@r!Nm$sC9{_Q5j20+DK1C6bGLDgKTNUOby=Ej6K7^|!ZO`m zsCpOjat>mFLDn}a>XjE46606{RgRdW&NR)g>W&MKdQ9K;?3Zq+x1#AkEXj`E%QMbTPnyH@t87r?eFGf`b` zmj|1}!^RGF9NB3grnt!io4#w;K{AeJ>HYwu`$j@?1`)*;n~0D!kmryMuD*3tzgGqk_Y?VTxpzecFqWwgOR0lxhR%IVe046Rl)Y-|bqh&e-GKI4T~ z?&VwS80!*fZpI=rK~+6yJ+`ge^QN9p#tgaQQO&BYmjP*t0Xgm422E<)4;G+|$n+SBb?0Yn->uL${ifLw z76RxX5mOmoB2u0Cwrtg(xbX!OfILX2Nq*ss;>xhWd_TLwnT5nt=0MNb*{vTxegi&> zo3uqQHO zr(UPwcL9*oa03Bi+AYwS4vhq;u7``cpfLkU)RG{tX?UzUeJF1cUftaLjhNKt^G(Vl*doB;WM^>g6)Wa`&|8 zeu1lN#4vreBJ&Mg20 zC$wg90I_XbxzXc+`aM%~Ygbk0a=}mD=-!(GGvAQK8rrx&UAp28078!kEBU{#gzyfS;*!5_&Nx5zzpKuB3^p5totZ}9Nys=l_# zh_6bQq)OaV0*t)g`;M01E4mmgFiWv*y0UpWmNkxBy~X84!dOmfTigWgG) znG4MGt`m6991~na&=m6s37099p5efXF#=rb;}Kiz?oOfVkj{vsU1Axh zbda-YW-x5i4D9>&jT&5J{24rV6Igyosimo(bU2){(!V^!?E301)zEL*VDKrAI|d)w zCc$G1QN4f2v@)d!G~916ofPZF#$nnK)9@>W)pqShp_5#bpdyBbjw5Alp(DUJ_$(fm z>^EozaK&l6Sd!z#(3ZGM7VUCQSuNxe9|D9&b?Z@ofPEX|dz)P`AY(vTd=wOMyU}zt z13UPsLja98n4P`2Bxr)!B?LdkJ$=mN-TqACKQ$Xn6R^EN8uV6dRvdp0e~qB{Oz$qb zZnPb`L!(zMbTmhh$91##5nwhDbtTg!xh+@iCD1sU*>r&Pq`C3#gf&fp!5!QmujZ>v z;0|u7wUyFMpXEkw`1}Ui{0F$<<{$brz_lRT=hc1{mp>Ixa{C{8O_uyR9%~aS?tr`e zor?{P#xxGdbFy6r(Ltefje1`U*Ox_w*_&7LH%(-X8u@e``edX$e*a`mEYEJ}-mhkz zww_Q`9u%*^UYw3QO3d~0qZRBLWdckFdG_6`sC9b}+53FU_mrgeGg3@hDsIdyL5Ap@YRN}$}8$*8k~Gs>QpYFn;SCC|$G zObd{M&5~1jGx@J0XBqzzNKgw=u_xCx#vpqWdbeS>3?i|?%HxQ@sD(qzT}T`m$m3yB zvdQebvj1@OiL{M_M$AzAlPfFp;;gk!Q!lqYZ!4_QpVS)9Q!^KRYTFNkcc@j3GNfLFWu zy^L8ls&CJz0goBv4b7fjKlA2&mt*bJTg>b5f=dCQzJ?Zr z#Dvp-|95%GFfkJd+n7!RJeWNWKr&({mKsyBU2eDUM~GTCyP+td+wdFTVD6`=coWQp zg(@oXVUP?^{$*igyh%XsOWIs-2j?ZQ;4Ws89rt45@$zud05o__p*c?_W52|@j=M*{ z5pY88P)pR;W|8DmqE8tArfu+s|Q05>GsW^E3AdpQ9B zNY&`u%9s3jVBX#b+6TKO7pBiS)zC5ol}G+t(QFt@OW*57UAC z&>d`PE4!n+v^(2{}}C0jQ%_*ncPN9XFmQH8s(jq{M|SO>yi*Dsgqh~3>LrpWFQRVdS|ymjOxb52qTQ+ z+G1!K*rUG!uRSSG;O8E~0k*54|9uG|p|dJ|wxBsw2Eh)2c6RTpXrgFF{!oBTc1;+J z9nLWwgU&8fI9Vqh5HqApvM2Q>qlyK0#r_$rRDCxCG>Vw{N#R1b@4HmK2CGH8e>hSw zD096W?WK7!peG438BQ`~syE{E(^1Q2WV45XHJBqlC4<#P$3Qupwre5pc!R8;HDx#1vZ@B=?}1!B}>N-_00~~S0i^>5dhyxhCk!u zTS<@!CFSC}Q3gX&0%ie`EyI=Xundh?cFSs1vqu$&rFBMl%PxC{9U(%VR_tTdqRs^u ztJ{7pCQ;j3v(zGDoGEyhc z4_&+8+s?7Psct_*-5ZNP>!PKBl;pRe?P*(A_E;3qyqu~IU|60DTI>^ATH;B6r-^e+ z&%y69{N}*%73j#v_y)!fm&}Ujpt8XlOz%Q=DRIpHMn&d%bgUztlef6^(+)X}#8iO5 zBHyi+4XxRNI7@o2v<_Y-ozM4c3JRJUI{zAZE@&$yGOR(!G6USILcKgcHwyu%kXEUHB>2 zvJmm7?WrQp%I+ebb@u-YUE@kJXLg*LndlKI7=RU*9rR-YK@OZAH!$!cVC7TRsB3>< zj=2n1MgZyqvZi|VfRt!Ht^`DeoQ!s7z@@oF?0prt8|n-A;vI8=@QqZz{^=ED2~eYr z{cX9RizU<@b^_4U!_p~-m$*PN0As!eMFy18nYzf#(TBgDLVg<~qc>y)qc~>Is)9zO zD&u*QF?v)_kgj6-W_Y&1!lwfD)f_b?Pt&Mbr8%Pu0L zHJVEtTheH|;O=Fleo#G0$_2FhjDHBgp9DV<53ugL+&x)mqueR$OJ{7nn`l@gb=rq6}G)BuU`j0uhkKyolz^ORrtqx zIs|U&MqB|MrcZi>+7k~J5Vz8OcQMt0CCwD7X*+35)iV=c<)K3-XV5pdx1=SO(9SApV^1tr-!~Z~SCGt9 zlH`_bH`Y}0!9NvfwXBtto1T;!I%9zx&B+zEnT-Y>VK9gkFbBzxCSe~fcA)pWsm@_d@2vXn{MZv4~0HP9h=x_0|H1jY`lCm1}z%79>i%ti?Z z_ZTdtDpAQjEe*INVdu}t!VjDIk)boFNmwv#-c+(dX(rU1!5|g~(^f!>rrZk*3e@BD z5SC7Uqi`c;h734*or01)Q#kFnv{@j@MxmpjE!pjO!I3FlLMLPO@jm=DR6G}9*NcHS zznm=cd%;a&o8JMM6$%L-qN7nd=A&Fj98WeEmh}*C!W&g~WGg~@Lj758l*`gUsu2NDkQp6L0PCzb=C~yC6cXV*>H+$+>YFvCu zaM<5b)-ph51G(Q^V1)ZHt4E)XknQGzxDb$iSZr|RziqgPMxRuoBwWKZs8t}CL)UYL zbL!xq-clT5Ib_6hrBPT~Y(C7RVMbUnZ5{M34BI3XnDZ|RzP|Zpq1?1kBxo>kMRJ+* zQt#oiXzUpuV~&Se3+?=Y4J*I3HDN257^>x|`u?@9Ml$_;&Iv1>)enRxCux|w1Wl8K zhPCN{)AP7Wj`9&}8_%p8rVYl0QJ3_B-rtRzI}sMv*!Mf#N}zcz0kslzE>m0F1hrBf zy?{j5JyJS_hb|Uo2=+g!OfhpzjJdiluq>bMo$WWLjr%1j_YHp+#r#^KYx2p0q3a})AB z)wzgE#yv1x61>x0nMlvIGj(wh+aV@uWFmdS= z-PrkN4|;z@{wn*m`91+5q9h4NB04via@P>3Iqs_PwVbatZrW7GA&1RgT`4VY{(`c5 zaVFq%r&_F#q_2MQn}8&x5^WVHVTO7OZCw2k+w5&{-o+ksegZ`ll<9j|V)@cuN96!6 zzo(d$!89_g|Nf?Ne9Sw+hf9CpXbeHBh=fquyl_Z6r}qpV68v>^WbNW!Ms4%8%_2#GZ>( z1JG1g!xV&9ci>o~GbPI;2X7Y*-ziAS9GM7kbPv?DtAO-884PrN%yEp#ny9vdh@27av0x3w$iv&pv)4SSBCTX#S>0RxdF$Md#vLT`kup`u;I>IUVXB1$s zj4Wxp7m3yTdJsRvC>?4eYnSBCj}*k4zmeAqw(nN_XtI7oHvHrrHK#(01F;%Xz41>{%*<)g9jVQ! zUY{ty#3a^@tfm7vi7oCin19~>=buHHt8l~hU>o;?&R8D~=EMmsIiStVGvkf7hl_cY z2K#Z|lHtvE2VniSAOG0zl*1dAX8lSgL{vdJ`sps>>uI_Nbe4%K!B7PXUWeZ$CZlJt zM1zaP$!G&Z4b*eHeDA1R?C6&2zQ4w6uU-wNe;_$oB|ubTsNk~;y?L^ehU)fPUn)eV zW@(;A3?0Tm!6o}W>@OQoGlA@DETrLj6q`DbFRsaV+sTf{yvP1YJqWE&ub3$x8vO@jgT!zxNni`Y>nhLP!ag)PraYZ{j6E0RoI)le&8?FOhX z%x501g464#78GB1=GUu+EurS?6)Lntl{NpKeC?Tlul`a<+lkL z(d9aDeZ%JNe0(qzkmw*PWEm?%v$7&6)24kG>9j@MlFisbaJ($`9at00<%*)aLSP@* z_n&fQX8*yamiZ$Kt6;@oy^uM#a(;!(52yPW;q9FId>x=Z1 zhJTtMc#1HfaT|oB07mMg+BJ{}z|$$i#s&3IJ{=_}ffSOd>!fVk{=0Sx{H)wkW3QWT$1Mf;?bTwI3CjMttCy&(e5o#$haUG z(^sTFgUEpAgLE2o^-!VbXI}cEWJIs4p7u2Q<9BK#seXD%BQ%epF=2}hAS()c7wd92 zS+u=C+Bv@=!#fls#j!(utmL^Nbvwxs8|8d2nGjVxCV*fwIFW4@G-7$<^K7-aK2AwL z9cNI_>qsJ(jM}OY{`+YuMB4sey+at~R5>H99U&~8=vHpTd*Iy6mKK6fWm}`Ic&yJY-VV|>B0G|z4kWtyEfSu>!8Jxxbp2%>#t#&DY%IRnFYDjt zkuFB5en@)#cEz_xmN1~05_03snpHMRW}!ORYvats z2^Y~uOSt}NtY&dm2BmW~l+g1-J`s)6OmEKu)S)-Un|2)tFG4ol`u4wRW0bg6zFVqJ zjkU~QvSrI8GE|{Zk{%X)R{ihiUmBCyvHpF@$Hy8FLuIGO_H;Tyb@MEabHN%;3v9I`~sO8#der*7K$Y zuTO+;-aNVI+3?)p+dT>Vh7XK0sYa1IwtSX<$5v`mjy-qi@iYCs3>OZ}TOQ2Zr`4uY z4!K{t1%!5Ke}A|p3rKA`bx)wyinTHVVM&2SZ=MRHM7=@?Qz%4!LLwp{Dp-^8&( zyOFH`3CPPy+v?oxEzs4`g0~aa_g-n3okuz~B-kqPkiguqr^&<>c zcoa0%#1?BabS#+i3oVJfGx}`cM#UTdHyxMBlZ&T#Y>CSPwy z(1M*}C8-}lOFKBtdT@hip#-}%h`DO)JNbIaOkD2ZZXvpoxgAFB=t9F{o-vp_LhDgm zuAZifaRc7adc6E-XKeXkW1>H1tf}yxV|~!6Ff??<)(v*^iUAn??!tv-LMV1%#e}bG zy@Y+PLV#Ey7Ro!UJYvgmesxvZ zj|7s~6$xM41qn|N)@;3cQjynW?sUq>TWUQZ5;!c>@7w0c5ki5N5-Kuj2gKpQOC67j z!89~`;KQbu{;z}Ar#I%fJrTUV*0!}hD_7GM+dMuzxb3=Tj^mOs#?if`ca-9EmSI!nEa9@}w(b&zDFW*GFuQjUI=joLdiFa_K-AAJ*E zP(Mu>zKMvs0)h~0(iy&=)D)QD%wzXYyfcTig^7pFtkKNWb}P0UTanRfPH8?Z#B2SE z6S|lBe%y$qYRYf6`{b1e8Mv9l0$sVJ;Jj)9AaB-RotrS#^tU2Lvi5I)!2BD+Q|4Be1eWkwziyw z%Vwr2U&Nj~T}QX>JdS_718!Hp0FkS_y+Atp`;i&!&CY6}J)(y06V2o*S2bVx7m=w^@MOD>mDG zRV#SC3ez9>EIz8aj!o^M$Pu*8dPYLoHUe{X)vIgP(U`$%%_X@{_=?K^t`V_)duCls zO?6u*#q+}a=AA;?#7gh*$gs;aedc&+>MIg1Q=kX?tpTRC#^IW8IE-t{CHMMcbgG+H z0&puwI4{@zjV2-gfq%6S8rWvDdT~hqBIC7}6b&0FfqP4lakF8m}ZZHe%UVhD(7l2N39=@;L}&mB<#{Oo@5by$9D29mSl=kl)n#kIt5 zMiUtNxHF;&YQXA-pTMhn;`3B7tJutMOh6sQy))b6e_6r4ao$giqU*tgJn^^3&@Ww}jqb2yB^;7;G%ZF%4TV z38o{?ySlDfurE~%HP@I~vv74a;yQWB%uh73NS(i(SN;mO+Xb^9FCd&mK_*az8Za|_ zY$t*6B8ipg8Zot+8_er%>3W+E;NB85uvPIRckC)+SKHP(e#2MH)o5iXbOd&i)sIZ~{rP=J0kKDs8W~$_vZXzm2Ne>zmU!AjDH=%DN zyUsqW*Vd4wnAy)aNzdz+rfoN$^cK$`*M`iqkCto2rec>_4cE%N57<<0K1O8B6HU*@$QrIebi@;OgQ$==nz#45J#&63io|$J1MpU$Z2zMID29Og#g_ zWjq|krog?%*MW|L@^B=c-6*IQED*8-) za|sSH+w7~yZ*q03+Y~<`)v?E8NuWie=qdJxO1^vY(+-TIE&UC|4q>C3=+X+8&d=jZ zDF&fM;>+3|l#fx}#m%YnVW1fyVK6^x0Y6h1d_G=gT8!9ozSe2eBrWH?RXAnrRTQk3 z$B(f%8!Tz1OkgvjU~Y!Lqx_|0MgcN&unB}!&G3ZYYbkn}w}K4E0Ix%q^$~E|4urVx}~H1{JEg$_B>{f00UtM6KUV)McIi9(}`6UG>2x5M$460 z$bMk7#yRAbQC#poS|g<6fm#}MZIjrL5;4n^ac#s4s>>KrJo;qQi06?lI)l+@2&pkk zaND0vf;_82g4=0a-Dq$+rB_e#7qx@9DuSC7QmsxjNw+lA#0D78q+`vHu)j`dk9A7J ztx6by@_ehDHp+fYQVmeO>>6`6Wfv1a#-g-*!*{zgesH_59<4{=a;LtO@57H0WEs39 zD8bEjmUDqDC7|9h^(JpTy$@Sl0fiMmBWH5P8E5&7ms*$G@Qo`q@ISn7SAX>b1Jq_E z4(`@!w19SBQNIt)Q51Ww!mE(DGuU@u1TVgXpa>| z9Hzc$P1W&Kk%bZyZCK9)n(ZF&rQwD9u|t19uh2A3ry#yvE+2#};Bt-u9xAOD(O z(NK%x1RfCWCCLYqAKvkh>L<-6B9+HGFT~ji<2QLM&FxyYlm<>A9`_Clb*HTj;j<>wR zYFCLBbJqc#B@LgyAc-~!Ua18040-U|u0|VhmbY!9P}so`f7g1JYlA!tftJ;q$;$!gFnKCGp z`C8Qeu1Sz7BeeQp0)*e4y0xEqm7dHYH*eSV4QJ{y@_!mEQ(RU#4$gG&{90rrEN|Jo zjV37i=CWQ#l6Q}QRn5{X9E~<*eRa_7gM^^9SPuk#f=)wN+)6 z?a`EYkSQ%_S76PIKB~+Ge~f5^c1Ha|-Nr$8Nv2Tt<4!ZK-}7}P8u8?!58cEx`YT=za|7$oJHX^svY#9t}H zIh)O?Wc#S+h#gUpbA38d-;aih>cYDOb@mJwh^6JiANau#10*HW(xH2w7jC4ce+`7Z z{v{~3w}-m*58hW#GIY<#QyX-C34j_d|Dy3!dUuIK%7}NS#K5W=Ubg75ktUZ{yyp@c z-as5UV}@#|*t2q^<^X24Y#91SUHsDtCNZ&?#1a4{Vp=+v@E{VR+~!}^Et07NH9HhN zI)j&0jF^&_EVK{PtN{SdDb~e(e17>`o+4tV^{J>Sh84@JIu zqgEY0Q$M-@X&DVKk>A6wc-ib}nd=#0)u!kKg!ci>n5?Jyq{X$NXA2(Ew?W~9!lEHv zyX-gsB9VBO&Da##+ma}ZRGE)yIGsHZ^;nO=bjN_QS}`d2;}xbj!54!gmfzS5?(lCo z?f?be6F5!cLZv|?MMnYA7r}DNQwCvBawzrEJM$d(o*NlobmuUxmH*&Slz2F+S+tBR zADN0(8C0>9fHF+b(am*T0IeG3v9h`dkJA&N(EvDn8^3aUt~J`h8t^4n&AECu-X-8F z8Lsqv%g)opfcWrWja?p<0Eo(}9hSE?Ti$X!X&QB!eFJD#=hY<#x;5ZS^F083Nl${G zhUAJqdM7phbm$P9`l6-uQl5~|@tvQ1@_78u?dL-e|NRX8k<9;yj)Z#l)Pcl8O*JT0 zu*mBl`-gp{Sk!&Hr`u^AWYRACk8&r6iQvJef&y^skr)!coz! z$f`X%U{bN|VPMX9w?^fEVvxCfAvxvg;Ry_vJoA9Kfy|rWA)=z8U^~&aqHpM$fsp0; z#x_J!z#5Ws*ojA#1@xe>FEOslTSv6oTE%$2&A|G;8fCj@>=tEUV?llC6&eAD<;*6} zliB<(xpT|&eW}d{pS*FQ!t4hOqjA$6X!0};sog<7GjhE!CG!JS5gbb4?GCUzd3l#NB{=i3^xV}?5G9+0MG}Ixhzy^&>VOYN=wmq-{s^j z&@+q~Q*J{<4kGXg--9#~HFFHQff)%6i*8${15WhjugAFE&^wY5j3wPv=E-=z468jm z%waT(Q;Oe<>KG4L$} zedRo{$E`;rS44daHsZl$sp;Bte0(8Q;MY6p67`$TM11SF65yl~yrY@GR=KZ^$bN^c z#m~A8Wu&V<5x?s-pON`GoWSUnDx;B?rwkGZFgzms_Lgb*f1|24rqi4FO4zCGNL};fC;W95cE*gT%rMkab&H&AH>MsV)Y~-WrB$m$v#zK9wdt57rhP=kRJ^h2%NZL9@27FLQBADMXx6pTs&M%U-3P;-d6pehOGraTHWsmwXqNwT&xjqguJc{9AMi; z<%Nrzyq!_R{SBM7e5Pph+h!X%;{s#~iv|nkmH|M^3*aSy{B0utqo_IA`f44x5x1)i zO?veQ$O(#8D?V&_MYYC2lUj&m=9Vn(Ty-Rj-%|sTSjSCo-h~0&s2v#mM`@hdR~YvV zZKR`D>fRQzPJiJh9r~C>a!g@$noRVG@~ZJ&Ee|yAvA`yi z8WI2Nt|dfXb5sK2=TcEzmgxNs-c=!*&zlViu5EzA9SKHz4QF@)fe-rY;dec{{efO_ zyavW{8z`aBwZ1ci$%0_=+W=yZQO9OAa60H?gS?W&Txtp5TL9>PRxx^qP`M5=!HIwA*yzU)l?5atNqT^g))$_D^c{V3;-ZP!HHxbe&)ft5@;W}!U(^fSD{Ec{jrb~c3cQz9|*sz%+ddYwI z&iCP^d4eB#R!n7H4lm9A9w*W#<`s$f`8wE9`=j(^O4tQ!A=ZcnhxG&zo1DJK!6Pa# zqZ)`Pf*K^A$%v3UDtXW+ni1Gs`XD0)QIL0snQ=(&-a^L!k#jt4PYR}pj2V$PBlvV# z#ts^Zsc(NZ+mo`FWPCOl#f;nGL&WDuy;x7Z_s%a@_~MRI^t`Yp0?$@|-?Ux#*j%58 z#*Z!cXHtsGTU6GiP@{K^Y23ZvOyz?&i^51Zdx&cbvG4xt)0$e94MImRD{^^MWZiPF z#)CFjJj70;=|x=3Lk-~?PAnGqJbnTiUr>p4>iPB&ATf8Fk-Srd^-J5&VfRd5*MQc+ z4i0pvU`*egco!^NOo7WEU!#bV43#}BO`|gqM(5z>L34KiPIky@!#Uq_NFQKXP0=K9 zBG7tyi)oCo7427wy(-AtuHL7brJozv8JrEZgBb=TF2lQ|HTmp`>3;l3%$>HwR;?nr*6rR|H?Oh4WInYk%0XL)0ygt z9(Zc2Qv+2BoP$|{_699#1Zu9+__P_2G%cN5f%w-Z z@Q^=2$9$M;`I?vU2miwv@nFZtcz?dfGylWmb?jc{`x&Y@m;dsmb$_|=7k z%<6LHWsLVY{Qo5jq9S%H^6_te4-U%uS`rfT!um;Nw%yaMgRR57O8dmKaHcv54H~*0 z=2i`w0EgUci-|lxEoqj@Op|(G2p=6bIQZy92iq2i28PFkp0$=esTZHXQ5uhI zMdfFyp0J??F<{>3oy8>igYVr-AnAMlaR30goncJ_H9|zM+j0l~m8gioaxt&5=VF+Z z;em7bO{Ue-Z(h`7BU}BnhCMOh1p{NHmd$209f0mc*#iA#2=N_SYg+Lehaoi^;=`PD z`AU=<-C712LiQzb+?zExx?nZ!XIF`r|AKkw#PUgrZG+p_fsbM&sK+UC9;=}zz+*#8 zViAHQV#}a{QPsfPKj=Oy9#fBbd=ka&wYebb@MfFnbA1dUX9Sgt;!Vt|mLkRDOoV~; z^?nM`lkLyb&qCmg*f{zubN(%!8ACk87Wf{DJeDvB%5&0d9=0F*S<&qMNz#soUC69N z@PGEB_?e6HMN@rXwqA;D&%pX)`NS^p-Qn26_FUYf{j=9Z2Fve=v9Ao&9}>&%LYutL zHJ(W8p5++5cvvOPOHA8Mc^+oS2p?(^d1ZiS&fv87MnCNK?HZW!aATL~9l?^01K{gd z#W+p?b zbR=vX@{9sEa?P zpKMqM3fgbh*8-%>YAw_j@8();jdmSLb;&HijJjLbb}P^odRv(L3+dXtC@W~NPOkgI zbK&+RT!e)elAq1QpR*G{nPXPfIE>{LwwEC`kg%M-pc`8J1@N;6%s$j5E=p(%8y;Yy zbww|)0N)N*!$!Ny@aPMx*AJYumK(FAFy0b+ZS~1xGy*vyYOdUQ;RFNxPg^-_u4(ty z*Z4~XN2_q^Q!tNrUg$%W;<>Qj19}CEyl@WAe^s7{ZDcwkVR*kDv}9~?K%Qp|-5uLS z-64D{g2fjAt_Ot)Ed%=FOUB1bZMiSrVRE~ZME+a{T$z-_F=}pZGej@xXmfe+`Sr7J z-5`fQjf$)Ya@==xXdS{(^=!IW%aXjXXn=g#AKG%Y;7gujWs0HklxM4$CBfX|&X=!P z#UDHu2KViazDFmEm8nUMzL=#}WJWtTjv%#tmf5v$gf%aM0$WuW4lps-YE%4uxeT+G zKbKP@S~%SCNcG4`4q! z4h2=R6msKCgk-3>Qe7Eiauy1^9`Kh#ts?6#)f!;b@8Dhg5ctsF-W_HCH|T|m1dVul z+Eh0{nBNhE^b3JGGSqUOEMj8Xsqcz-Xirovext#1R_J+KJgfVwW{^)fTaisa9x14N zw7M2t8x`wHDRQQXr>ti)kuqd-h3K*cM~vUv)I30G>+)7wy;jb_WP(gp=4&!s6n~HM zdxLbu%X21K;&4b$3+flu=3WO4nC&ILM`)32S@o2+V5Q&u@S5+Z)V&`wuIEJn{;S&wM{V zjfyfIQ*c<{)yB*qz}8_t>*GE3`asLJs?lxv?iCWDhF?@^`_UM7EJSZ73 zBO>C5%-akqarZp7e3`ncPGCEdC+YA$T_9o06exA`5B9>|i4RlM`nRbbVKzzG}J`|9g zIF{BKkSHgh7U(em`Z0|S)#`%O)Qd%|%+v#MCS%Q>LwATNJ<^M24mA^Q$MdwteAIu` zsuKu&KcTVOM&bP^{9p7ntgeO0Z-`ZQD2p;t;U}V+6Wz)n2ob0-;2y&pqwQMbY>!P$ z9AXR4#c)3<69~D;79Z&`o5V+dLi}qysKKO%O-xDA6M6Syze~k7RSL+Zhrw6?j?nvp zUkuBHPY1U?_$pIM#ROF#9Vt5K*OQSmbab=bis((=U-#z7)pDL}cutAEQe4 zGQWwKKRkq|A*xk2Qzd42VFVe!MzmmUCFT(+wMWgH>h*mir)mq9`}-CLhTj4%iUfwW zlI*(b@KwllY6EXw5T0XV(U+1ccTJULvWj}{jIl2~=rVw`*?xHShi8wl8W3F~60cmm zfP_DH1R!!9nRO;sxtVvVYVwv-`A|PFZqHeb6**)H6I(R( z*|5co4`8x@oYH9lG2w*Xm24Jmf?Qd;3l9`w1qDFElez#rr~ikhd z&9QveAFOy(4tq6iKV5kE2i|k~QEa!UAjdf4om-`e0m`y-lVXB&ZtdsEs+|-2?TWxg zccjA+AD%4(thO8n5+w5jDanUP!`+kIZ%=6G^@)(?vG@bdOO8*{QQ|OWq%|tV+=@nOc=gjV3a)+4ikAz_VY_Qfv+hm zU70cw7sZq(22fD+7>BQaK!5-N0097ip6XCf;s@G7Qpr^<_2(-`F=b%~QeAhtLv$Kz@`BEWN`0i?uS73%{vYcwK#0qh87b)2mGuVQNdvx- zs17xNdJJ2M9+RQcn>EbDx~=h=Q-WG`km*PFIYET3+giu8f13!B zdUVtZQ%8mk;7#kvDSc{D`b_8dOo%mXsEWpQ6RZ+S>QgQW2YfD3QuS%sxqwob6-jOD zPNrSi-&ae-W~5ZBf{X*cC+<8tyvY|K5%tZz>o{j4hu@B%(xOm1EReR8PeT?wT3V59iI)f8$jx|Lr%8<$b+y9_j0r={4Zs!&?=l;Mxt`Xy z+qqGj0)kIpBZ)yhQxmd05Gg4)OY2U)@x;y<*G*yq5D)e|IhO5k($HN1Sdt-jJwu?m zcmiG~9BdXJ`u(ng=K{&9Dv~GuZTE>;V|M%NlUzfZ)4#sDeqtNXx_!%l1V~H~PDyJC zl$ffBoB=AmbTfLb7&VNMGdt7FskO6^{DH0CjPvw~jANQQ1g7#EX%&Tzm<_N{7w7@ zRx%SL)mf{^@OcIhD`TS$S8s54V9IpVsZ9b7Zr}|5JXSg!yf%8U8%2f5Yv?{2OAa?) z-5hktuz!11|rx>4NgP|YPAejQ3q0A_d>JwEQwcO_cIwoKBjz-V1d3YGx! zDI@bzX3UrwVvhu_Ro^l*1`2qNcQGpiXIQc|f@|KWS<TYj;)A5*mic>h*SsT~m1Ltx=lcZSw)?r3`HSuIx^8wQaI}ldMtJ z#|-CCNcap^S%#j>V~(3d7q-0OsAw}t8Dw?!XuL@zn+1pYo1dBMcJe3yD zia%HLUOYM!;{%30;D`?Y0rgDz_d8E!(%pO*BKLZ7VV_mP=E@RcY-b~HT~*e)Gi51D zFe`2)l5)5m4Go9^Y-PjL&|<*S836|pMz>ASEaYeqjPJ&4=J{)$oA3&y#E9FC7bG^Y z*GAR=HNC>o)$wx)0UJ!p zHnsY1=NR1gLTXXxoEGF35Dc=IVjuBit%JwJ>S*j&Ra<;Kd79btu2){ReOFKOlf|ns zH}O2fNa+y@SUBxpxG3;;Iu>s&PC zyeo$;KVupHd3YgL^5-(q^m+F2jRhoxibA4|a@BMTJ53FfG^wQIa~=N=pjW*r_?YHe zFmSAUY@UG7`Ahu_g|&ou-R0Z;#}Bw2J*bi;b)rjrOas?BEM#ZG_Om3P(v;fTb1n$c z+3|SqwA2m$P6=~JU8|~1M1Yr+L>E7NE-4zGDX0uB+jnP(f_M#}4q*RhfXgJ@Z3`1& zSfe2kNx1lFsPN96D3$8z zB#GbMg(h!t~Lih*j7v79H_s|$j8nPzOf-_77Ltf7INWLLZmNl3_Ub;gwAWV33# z1_YEn8h(5)F23c{%db4f*K>`QMC)f=@S>LryJnm#vkh;)Q3JXunOZs(y#~0aLDB}=`c}anO2Csg`FDEBTgWp1uzJ6EqEqobq`;&KMqz%bgbbIRy#C=w}Wi~AV$b@ zjZr3`YR5U5OTYx?Rj5V9@J~q65rW`lSdXaqLpRLTn}{vZ2MFmzYC#T8ZsDYxGbsxV z^r)n!yV57@x);r#F(YStuaGWe%L!yW4iNxx)0g0{7-?d*-w-JbV;9XrxO58w;I{6M zdi40-#&77h;ysJ%Q_f>odM|N@BYY(2&ivdU_1 z3l3)b#J2y}Zj$&L|%Ob~Q`M_zoqCm-p3H9hEGUKcfLEzVufB7LgaXI8i=y9>%zJ#IN6LU)yHd1CFD z32{18EThht&Y8(^8W844liu~-Xi#P1@;BMNaE9z4^>EKV>9NHVfA7JZQOslW?F8Qw zE|Rr{8I~z~?Dk~dxzee}|KAG{=+s#h{Wl*h?DBGzCUj~tt_B;w0`4&zxSHfJ;j_m# zVNVybGO-Xpn>YtI=L*@aXH`R3Y3*L|^`1hHY-)_@S&PY9fT5{vpq8j&SvMU6qcBeV z=eovc0uneEyEC-p#BS1Gkb%XC%bMk_HGp(eb0LdIT@IOk7qq}-b$tjTOXh`t#n_wp zx4l!5QzjQhwExv+mXbA{nT4~k#@+~GDab(? zAbl;dp+awMu$KAYlG~Y&7plW7rqymXnl3_R6cfpfDFcnCm=Iv6N z${WhJGv{SFA0Z>-7o`)!{XKWNqc#I4GeEZVCj-V=vWIHuPd|ij*a?Qcv6Cej#(jA9 z^L}eZP>ba%gP>kmvTEo~N(QQlkznpe3?PO41&pm!t3S$#F0}X1*n*K%y9??r%b;3) z|I=JYWH)`6;d>LGgt?I)-Bs&gvF+5l&u=~sFTlV%Q?X;_U2*$j$JuoX!b;fk|H1Pq zFwa7UX6Tr1jlFW&U1-}s83aAhg8ShBF%=O5xC+zHo*HCb-x8dV9~t*be5;)(q|T0) z?2d-X!f^!QB*f^Sswt>{uQCy^k2HMnc$}_ArrS)|8z#b&cdTyyj}LpVCXJ!ZITG~; z;>Ztw#~R~jtzgHI^_FU`8oppP&X&P$?y35TEI&>Q+T42u#t^qhwwd*@1(qfJa2|5K z^}8&stnyytNS+H9^2W)x?ICm&B;LZW&eC>Ri+#(LuSbMgU{oi@4s;l@b0)WZW6Fy8 zJ*UhU4!M4-hs{hSH>k~9iFwYPv1bNuf8?ZcG+-cx>~34zTzl4)g(bCBcXty{0ffTm z$cEKD$7tCe|8$3#RefSoaZ*;(i9+)8glsl!hT|%-VFdAcWR7{gFt4%CY2=#(+Xu!B zdYO&Y9@~0d89HllvMT?UocB5^9~ax4TcKr|yFZcmbA6n?COb%{P9dfPz)S@lefsP| z>369kar*iYsjX$F8jfk4z2(a@4h)q&0lylr++RLTX%vggW`M4;bJ^BCcTI71+15MI zrEQCMr7QKKy)8a!$XdtgSGk#YuH%!?*$Qt1seh$!G0#T@DhvW`wCh^3Z^OL#BC8di6W?Sst1EmnxF{hJ@L;=xnhk^%N3zuHW; zdE|%_RbdNlq#Fooa%KLss{VT!T=viJNR4WGQG()qN$r+DO)(*e~t)Dq~fy z`nAQNClA}+a(K<>bIg_2^ie2B;C83emZKoiq0qmP=Cz$1zl2s6#xUS`tQ&D0vs2Wg zI1~gBebRi79;86f?-zWui4(k1x@&KjUQIdLZL?~j_dM@7$nWEG`nk->fYLUsqbpNg z*J1oKcn6oCSIy{Lh&$0Dh#)%|0R7jwdx>SVNnRQX))c-Qf632;&Dia){h5Gg;pk{M zn=E8n2`-?oi)I29NLFvaPPS0s3kBS-c*^Kr(IeV$lV`#-cZeO`pW>2-_mZWcZC5S{H3@} zW5^F?19?!tLhP~~ZpSkLh%2T5`H6fLzCvEst%qDaiG43VLOiocvc%SDsjJ*tOQv4H z>(y9bu}K40zpV!v1}EVkNV(mm57s_9v7X_ZzqDpOpwK?5=t=?M*Uot+@E~I zf^kmy#Ocl-2@(aj61;_>6!nkH_H-DGdwrj2k0B-o0ZAxz)hY3#hK|5B)`*kTRF zFH4g;j`o0;vk&+EY;6~bd36Ge4fcgCnJomKy8r`=dI_jF;0bE!bPV~h_l}t?%67e} z8B6pYHsoc*g}wW@Fgixt*IBR{@ZkTh1H&}EMNS>Wr=-k2WlqRbcF{KbUjRgaf!PzG zCw4+!2x!16c&$s+MAf#galT%gpjUHU;ixyO;3z_gn*JA#h5NNs3;{zziiXe=ctLV! zan%;kSF<*)x|V$TcJ;;mdQs&$}OCgz@T8<7XYGcv13fyumZ_^k5y5WI-`rQ7(oU z7GibV^6cf&@&U23m(aba7t*z*zkXbN`|{ot7*B<;E1WPy7gD?HXLH1`jI2JNAjyfZ6W5b zfwVWmd3)UW)NMC(MhU+{Q`2uoQBV+|-7E51oDV{Y5_@ZR_)*ssiCoSXB8o*Vh5fON z{G0lW^d*5z3-esc=a4VKu_y0Ud5o%3|MXkk;P5{-J}se7p}{X}84xdbI(+BYad+uY z?>+r|;kN0OIH%p+^6GXS0=9fh3M+n}VlD$E%{k$&D1)Hm@zV^in>V;_1%-#LY4NR- zxijyCPWyiCdc#y@;O~BzcC6VhWe9#g^M1BIxA@B?^bc$>MkhRCKg>ADc)Mz=cY{r1 zQyS#I=a+>Y;dYuEmVWfDNi%}CH9QL(XMW*+Cr`t4^f}-Dj9Lp`)iMOu1sh`Bm;T(e z$Zc8&B5n_BvX&qd^3FG;o7%_&uZ8N%w--`WemTWFLOQEfJYfmpFNl7!RISnZ)Qo4Vs4 z)+S@vOb~lG;Vs$EkDNba)PKYXB*cQV33yTFV#TgDD~DzSpQd4e_mYK$>1PHq<7m249B_@yaYacN|B8Uv_-QTc<9)gc%qGSkM0pVkJlJ8#boUZ2*N^5W_@~)1!C(=L9|sq{ z=pO{dWB{@e?X#Pc4g?(m*LXOHgMl{c%_^s%Oq}qyOC?!CxmErftc&{>t6rM*Pwwc> zccVsGzL8$Ne51qf8UT4>lVutAOnjr5K!JjC9E+rKxx+&TZg6NL+g37KxvAT##$mfM zy4q#q+(JWvMaPyAr6&Evw)ZoA9Ry=hFH^s60av0UAM-F?qvt!7 zzt?WdA1I8*k6o^c1pV8(6v^->jl4y`=|v&8`{ zpi%Xh-=C^d|GXair^#tydrQPsF8*_NnSGc~R{fecWa6cx3Zn#MkKI&_uRP0KXJ893 zZMZ!z8m|}f$YjS^kLLu!=dw=5w-4m1%IcullWqUp$aHyLfB5bGfBvo{TSe_a<2W^m ze07WGGoP;td5z^}32RlTaz8T8a?c?D-M`GoA3#Obv3&c#znp$#7ig5OBlFuV8P%1H ziW|m7&ZT!64mbUJnjqWcNY%8`&jbA}bue$(k=VY+#Zna}tbnKKKsd+!PV+*A7exiP z#+2~$Q*lIt)-C7go;q0Hwxy8xh+E-8=G`?6yG@e}iqR-FZ3b@zAUtet?G=%Pz zE`__|S+^?L1oAc3676hw7UNJe(pNUMZ19fEgN%N&W(}H%T6^YQJ&)lV6wkoBT%)jnjKf`1o>o|C zcs3S}Re*2XHSF4w{yJm2x_0^aN3=HhBMu4e*zbF)ijv6Sy z2SHz4{u#s?r_I==uUoAm(@PQNMSBygeQG0SnRHpBGmISi*G<@5`eB~ z*x|h+E&O!|`X_>p7hu;w<4D1wb+GnF^^?sv9v^ppyAIGb!A8rjjq?X^kKw3BC45@I ztlo_<>AAz*o>RK;lVyp2=>{fkY7T3|Q~Tczj!hP#a9Hcm>n%^mXUneQRV#PRfTs@uya z0-lF;d$#nHv1Pij4~>$}_x@MDP7h?-$o(Dx`v!7|ra45tkXsR+k9~u^bK?^FVHkS8 zAx^`H0Alkeh4G;hcX94xXmz%}(M`31V&%j1C5U`SsHRqf2`D6uJV?BTdJvUYW$9ij zC`juYlDaClD+odF(!UNwPQNIYSi-vL3419fCnO~S;DG&)H!m%ROE{_n)9q~~N6gO* zS!y&=Yep*nQ66s+jXH`iB)Xim$iZrlZ8vBeC_H~p+Y|Ta!>1zKeh1P>5>Yme%Yo;E zD>LBi+rpL|Oe`3x|Ncjc|ILVz$F1Z!!kgqNeDQaD&{^Sr&i~l$8>M6=#HetU|528~ zYcx{$-9WgTk-HBv(rL?QLJOZnBF!lW>nkFsXN8k#>eh>vk3IiXo0)BNs#pJuye*KO z&$~osEjc+cWyaZjl%rZRi)klBQA+gIowYLK7$g(^Pc{sDSay4gVPWWY- zA%#TsxUo9i3F9cHh_z=3><&oO!SeCkNvBU(NDhP5_A_XxZTqer2T6NdLM40%56(kj z{YjL{wkzZD(lSCTU>6VV02q;9l8fPPc$WSZq{JxM=TL@YOBPApKV}F5dvemy2u>w+ z)c3JPB^1zL4~w=)KR~m1jufQe3P@HD=CEkB^l)~+I zHPM8uuP(z=jP|IW2KGj+kV1UYI3+k%1j&ywyC!n22>>ZC-9G~na!e%f5!bH2e6>HQ zLjQSwh_o;lMEs*;^OzO(dmbU1ph_V{=^(-mVnJE-at?|Yl{uRxm)G_@YUU<*fW~-K z`Ipa&GD~K^!&}w#b+8Z9o2l!r{D&)WAtth)yV^8j%v-MbIh=sp z`Qx&>Vebv@GoXRlWzfKl(;p0da)9VrzrZDz`NP`ZlQ-p^z7(FU?2+_Qp>T4V4~r-z zuCi`hQ^S1aS>VJTon*ze(^ZYjD;+kA%!2Ff3|{^v@y&Ad`s4u_J;Df_CcygCgVG$S)#A5=7BSKW9JxtbSLrsCTz zDh?u4LQPMv5}}@4GS?UlaV_slGHyoxP?-S4u44-0%DnUeqEQ_SSl1!z>pgFRYb7#C zgIkoZu`qmxq&18Tx}`zJp6jcBT}h?pSQAkZl5?OrghE?|chQIDhJ+|h9VYOOJ*8d5 zm+hg`!Fs{6qbx7xPnjU7MidM&J86;}|CWKGXs(FO%y zd>j@8Riq!okE7yh>S5QoqLfR%E`7U|-M{c~Yc&9#zWQ7yMHiukLT*XJf3bY?t;p97 z0Wn??7!9aD4Mj8R6!u+XF)?+$2C1o4n~U6+APeZDW)}B3@yGQZaf7oS_tBgM-*E zUtZP022GJ8PeaFR>MJ1-!7OdMO|O^P4FH@W@t&tQ+ajj4;FF?lJ)au}!O@s9{lv$_ zc@j?ZB^fcA${O|EX7LKN{6mRo77rO%lRgMSy7|d!|Ki`b+y&SUBJzgcwpN->@~ui^ zQe@k07ko;5$Dir<*@$%kCcUKt*FDqcAbNU->TXxzx?EiyBK?-!ZiTg9&F?0iwPBbuSr9Sg> z=vw4^nqB-0dDmf5e`4(${f#V*JsBqFw*v}hw9QY74D8$Iz`+vzE|84RF(a9(#$QoWe?sWGUw-BCEviiG{HSH_zE;3{A7QJ$s_T(p}(3a>sZ z=07*?rR=@-&+n>+gvm`J7EWf>6hFa%@AZz`sY2Iusn%HW>kO{mpzIQTE!aC`IZz|h zu%?d(!-7DRO!Uw zNTI^BEI0JGcAUOWBx2aPq%V|S#yi!x;q*& z@kQ)T^*xZpIYP_@a-}L%Fmc-D{Dt0Fd~cFn)@n)~MnOA!W-##LB*n}7!^LcaeJYLc zY4eY~-u#4jMm??^5Jd@kmSZfeU+C@uKX~oEh^AdwEm4XdD6Dm`K8`G)WpuSNz`kK~ zYr>uxxE!Ea-i0{`ajP?4P1e`9^))!5A~JZ&jXgF_)85?r!U|+|)3fSn;A*JbDpF{# zcTYTH;DB&2U#D7Wh7t2;9}jS3zfw+X1JYmevT6ddrKE2n&qv- zhqBeD(Q~e?D-a=$xfGl)579(Z;+oB?os;hS z_CTf#nn5oMpCtBo!x8CejW99bKdoH;%Sdrvp`lf z?gj?qXY5#subMvmx4(tI=4*7eYheYuIql)Mv$OizK^Zhww`t+|5Zr6@_MR}>50 zv$Ns#qom(p>5|o+(nxhvYBXy=3xkzo9IbW`RV3FXA9a0-X*>`y*%GQOBG*_6>L@as zd*`xT^WT~+k6f-mbcCva{Qk1u5A0yDq0#ZN-g~X4ZjPvOWVTNs4zTgwAf|V!w}JmU zL`|o!V`;V<5cBuODW-v7=yS%u2k0AY!GF8`SD!N`%6JFO${-E4I0EmnCZi7&^HT3e zIk)Y;$$8aFqUDOhSr(WbX8kB`m(w`+F!j-N&vc2wH7-L5DCi9SU`)g+270XI$~~A{ zv+&DYv`0R^3+uEjj^gFr{E8L}Xw5FbM#gYfnO+kee7|WM;^MZzkA=k!(KoSWdC}N6gN~WzWyrH^x*Dn=5Y&XmNg`E z^i6Hc_g^4Z7zR?FKZ5%WVItxd`SEi-1ohx7GR*PJvKX>F zGJN@r;JcR;aHwk*>K@6RhMlAg8q#AHrK=&P%R0Bb;KhnzlRtcOvxQsV^2YT7t8ca# zW?LmSrJoV24~K`>{rnqhtpm42yod-W67>)4m?CFo?fg(|y*+dCE%>Lk@)|e(hmo_4 z+)~8zvnGU}Qtz!iYKs!GfinOU4w2r8(Zr{(SnEe+S4TqB2Fhx8(21dx+(Vt2^C}0g zL`N8{xdC{Ihc~$NkWc`08Lhr>fi^tnyBY`NKIkNp41kh7lT}6&j22`>6utzfck?Y`0bpeBzEO zqVg<9VW#*c&qV@TGJn%@@paV#5|^mS7kafpGf0!P)OjROJU`2PMvDIEq*}pyv*>q{ zW5ME3pfo@93*6j7P2gu5jWyDu&!a(4J7W3&j8tT>D7}fhfHfrkLe%MM6Bs$sE1v)H z9};0mnQSmxD(vMox?GYyH$j9gz*^R_0g_O7&JTEis=V3!3qYrk58JAGf&Y)iWEe7 z$%GDYP!c1A40ptg={ObYEx}c3Eb9Q5_t(6pyq)-moK}R#|3q0*&1E>Vrv#I zctmfS!<$;m$}<9CuPmBY{KRY+=fcwr{`yC~LnB^=?hZ5aGY2Fn_%pP?fq1^(rA1+I z@Z$oH%PXI*1$#RWa{oL`Lc#XAp0A1ofeb4kjK1)^H757~N?xM%=wF-it@;JAqovkRXoLyXx6a7u@p;FdNH^DkJ}rSi`H`Vt;07z7)i z(iz^bq3^5h&UnCcc3z#%!8%Ei zL6Gsvy0ApGL?NK*lHHBPF0GW;**cG&9v>L%48HGHw@iy>jT&xA@VZbAo&>gBHBtx$ zag3as{?7Y2^OE8|a|HQYEG1xo&MxbJ!Rnt0NJSXqKo^09X2>2PSzJYpk3v%sFkl-4 zgJRs>skTOXa>Vfd9xsujwXo^GcyAvPQh=rJt5WMPPv-h%#}d<$dkn-@ffPzubXnGF z;)y4FVsuG<;z`)BvQ;423||Eg)>G&A%3-~e!x4y4@n?^|+^XF#o|(8?{RiDctX0Wtv8 z{2d~{41os7kbdcr?_(lwu93osVb1ua6xENCH-0gDdW~6)Wp3 z4gclWHHH6kNjKM9p>W2|(N;KoN2tFIf}60IP~RPW%AYyM+3|09yZRKi=PaiG#%OzO9^fhM15Z@7ZHi-(OAeaL9)Yhf@hk?kvs(GT2s4{icBu z<^wgHP}*f8@f=P#^w06CWE8~D;6yJ0dhD+yfZ@2@H}lPewoGwdeD}Wc8Cs1*F3TPk zsjzCfgcc?>)`G{J^=uTUPgh$z|62T)&p2bU2db~W5FML8Eo6by$3txaAgh8)w3*fz zqGM4WmxD-H*`&-4%OcDck+DfHugu3F$Ot`$#{EU`bDu$tCrRF>K<4zQy%S>-)bFRb zw3IFZ^#QZp%y8}E=v063oy`PvmUk6mkMG>GqsWg9MYP*b;o`0=s=&f1-G&fG(|jdC zZEXFZvdfq+&1(e(&#}&_nYmT!j)Es`qN1=_5TK?Rzqw}A$ZZ;w$MS+IY(SBilY?tY z?cU)>Apqm*cdybmcg_&Lbla)Nhx_>JwCO%=NHKo7rTHDNUecl+-1*0Ida67Y*_bR! zk6Rxs+lsu|#W`aB^5tKi`PpfjVlEI-7~!@^jomce;$4P{Gm~Guv`?(og>4n|zfwXP z>8_BHShDm>S+aETmsyJe_@dWxNJsyaHU{HjRYdl%Ceu9+SYuOp`se!e^B^pWY{<&$ zbY&76NalFbSglPkZN1z?2{Qk}1{{ItFwso|WG?JK7MC$GE$PxJ?JN2&9xtAD*qIoB zjM-PDnFjj;{K_1I4}d3b5CQ0Xb?@KY_xI5Hx1HOyt<-(*T{|dl$rvUg&o|!ylz~1y za>aA_2yOoo0ewOWDBb0El33HYCC*%BPOQ9a7$wkI1ZU+}xGoN%!f`5uoA7B6-Tm_} znV^twF4UL67cPMp8k-t@Y0#;U>2bx<6O0l1I5xrr5jqT9_7U@>w=SNasbTy|5Y(VY zbPrCXqvmwjOh_IKeh@-o%Oa&vEO8&1+3*48QUZ=Crp^8{+diGv4mi5A@<1h{tmtOR z2m349oGr*=%aY+uUL&Cprf<4zK$8+@mrlRca=+u)-UID%<>eu)X~k#dk`}PRI_wvG z)9ai7;Q@!}D9Wc=kM3YGqZ_Pjc}d`;UD< z5L4w-Rl$$k1feX^`*BRX)wfH~^H$Ef@AV6JpYSvVrTGDkq|TQ(GdpKZF(aofGIrw- zZV+-Y6z|2z>D^a421?7X3&=Cy9Fw~-7mMP4YQrzV2?qxsSEMqRf9S-;XU6GtH|+SA zuPK23?^v>psMYd!4?7XnuMHVo?_RhRV(hOh6vMp4i(Jr_BfhC=Hd6wyO!uQ$)`{p% z)pr;?i$2Nev7dQ1^hij}-E%(=MOVulib*Rl+0|{U1-3Y0j~6PqI#-FU zftbg(5Z6h&n9Fm5FPePp*lQ4bOIg8`u}cLe45stX`e*;lvw!AUo_Wq67Cw#zZbHX= z5#(|>(m&wy%o66*u3;OW6k#z`zLO>|=9~2FJ7U&eYlI<_!51GNXv_Q`iK!k8Jqw`l z5Kk^S`7v{ZwUO47=;!gzI2L)p7$1`bOF&$TDhOBPag7}uc*cZ0!|cV^s=ESn46!Fc zPK%bSbjpA#_X@evR7efVHfx7DrkB14uKWp~+{=x_u7CE=JSU(jf4aTd-42mwPNNlt z=o4aDZgPhe_Gzl!5lYUEyAu_RYj^VL^3uG&`+|H&CV5tOp^|V@Y@S6!P1a^b!b|+L z&JR~&n@!YHL-rt8vNTW&9XRBPP^@-$QUeHn% znT>2|NJGv(X|oYZkhi@qdTJITd!~y8T)LfQ2OdffrE~eIsC-4`s*gO~V-(N7M_)=w zMWxwBs4%A{n?WOSqD*Y%P-_{D=CTV)$+Eh7Ld2-8Y@BLnOCJDb;69ZqAez;Hs(hU` zHk9)?s>8rx9P>hoPpDvh94R#jpkbzE4Tl>lYs3a6%b7HqcCjaqY`{j`lBZkqucNQZcw)h7{F(%hU5n&sxrpnqWA*pxo9KjYVcDg+Bnv0AZ=d)O7l9+DZyn0w?MPwp$usjjGRm7(*g=c^4MhP7hd#|~-?e zQDg}$*ueuz-UV)^syydsf0F9`SMafivlpr%cfoPwooPe$I5XG;R96<@V$V=9N71+w6BEMQkGTW}zuNB4IQOSb*SjZCTrif# zOFKELqrk_#W`+W^{6+sJ03Y`>+7t0+oX3fltxwL_*~Jr5Gd_hxt4*YJcIfXDp28w7 z!XxEt_Mlu->nxcyti+DR8I{5N{G(u(!3FgEu}Yd=*w+~P8BaYuK`K+z-NLT093ZJn zb@WHn03J4qYNrif*0BjUuzsXmvRdod<7-!E;I5mgiD|V#&ho!g9;m;6I{|>~@pa6DNTVIjME~2L=4e^cM7sXbb2ixuiJR zUg#LTd@S0aq0#p(A6>v9#d9C}HX|0-yy?PXj4;?C;o(>3Tgr~BnoW=xgMpzJp%cf$ z?Q)4iUGN4h{!|%l)GOv~`_IV8AJsMVb?M?i>;wEA=eXu{>kG=#fQ+%1S27-LBo5hN zC{~e+{E_pDN7*)kVCCgaj`jJD3wJ)f7_5`A z1HtT;djOgKxF`THi+us`Q_XDvfYHjNR)j;?OZU0!W6ZV-;q{uxqPKR<3x!j>sX#SK zF6sPT>koZloUZy5bqh`q2X?Qz7Ipd((O7Cghre_Yxb4oi)0A>Xw@F-a%EE?Hu@S~F zx%6D>8qX7Ua@|sClv$!?pTb`PeW{Z2maXn%ZNMiC(12=lJDd@9YV%D#}5h)+nC0^WL>I3|#JB zogocF9K*5PwhaTJNaE1J!T3gk_G3dyu+~P6`j*Mn9*adudnnon{qnid$wT!4Qo!Zs zjZpl3@wQ`F;pHAicH|K=ft)~^HpPOB#O8jxIe!G|=Nt*St0L!~-sHiX6P_HGr^}Z3R=E%F9Frf^GIJ>}x?T0G;|sH<$6Zw!_iNI}3iE)%P#1P8A0wUT zi0W-()z{Gju179k=0=o1zYDHjddh8M{U$ZxxVTSwp8YReI=|kS<)f|R%pg@(*^mE5 zYAhGIaN#mu%$b=Cb%D&jTf|MLd%k>Y{T;vjeiK$Gwv~ol4xeaOb^UdxCv?=+zA&t2 z5f&mFWDp_#zc_nxq?3_uZ`=GpE;k;&txwdv_56YE*(H%|#|%Z(RM%t#*@@xVer1CU z1}4L9n$C>+6y~@(y+ojJr%Qex20A_=dZtmCK$yA^GP`ROUVa9*rn2qxHjFT~KWP4e z_`4;4vQk1n`x#Ok8kTyOjZTwrX|^4ZNv|2%2T@C}nGzbQ1rzZPDM-zAZkF9NV6n2E ze0)!Uee_a&`M~!|O7nh5 z%}C}vC0yOb*H&b~0-*WIq+wfqMo1w=dl%r5+H$Qj62}7&v?PU+pYf4wCUQ4hkb{XF26{QI(rB=}F%`s>T|1)*wdBWACy|8xYVMEEFyE zQe-G|`yodZD+5^;Smqu$*!hbu52Z*m^?Fbu<-MFvHC@_V?O5qN#1(Kti_xiE?Wp%i z*$#jPNu;v&iJ3v8Sc$hF$$c!#r@hson?EfpR&sS$4I5pC;dghz0>hQacO{<26@)X< z)t8*$T|)fZp3HzbCRiCVK1G%^CeTH$`Dz<`1bMD7f`a<_$V$9RQkWy>m%;lo2;4^j zP*o;0j1KtTvbD-NLpQjE)4c@=Y$(cIh)?%^`xd3adtUuG39?n`^q8kT=`hBx55W37 zi|G2bLc#b)<_qx1;99>rpfRbaDTn<(`T~gXBhL_KtKQg?!}k0zT~Y z0PH4EG86Bb2}axBT;SZzDv$Bhq*V=|2jeZnYX3Zj!KI!FqkU^|pK7 z4?w=VYiqnGxx%fTynC@%oci3EEm~JQ3*Kjgv(aQ~D`?u+Y|2Y7J|BzO;O=mH{Wf{H zsi}fotvxn^JwegnseY{p;sS~Ho&-{5&eo#DX^S&w-K=_c zvF9ap$479lRuc`M;JFM1n)b`iw1dxi%(1Dqx4`!(?KQ&Ots~;KTtB074CqSPfnr8^ zmNaFWW7QfV!mWNCP{^IS{-<#FV%b2+*&$QyOTE>|=_BwLmgdF=3fHkVtvG2$IWyWS zT7;B9h^WU<n@TivxF{S)}-j;gPGoGB0`g2zaN#G|KARdWci^02$od_SiJ$tD`et(STf9&!3 z{e=LYs1X9OnE8t*`@$vh$HjnM1rJ#(4e~XQ*y~4Ejx64;0ojt`?hal5^;axjaWsO$ z!|>gs8d(d}pV~;HI`gh2?bO5GK)jLOQYy1zY|~12ep`XzSe$|)$eIFa2G6iyBYpK- zBDMv}PhjwF6U#-$laA{!|5-!D;L3tjL$pH*O!WDY5+s(JodQV{4$d`I2psqJ10D|O z5Sc^-zY4kz75fN9GVIkl4$aQ!HFZvq8H#F>%= zWO8f+NDwIYzP*N;sDUD;@-^~;KdXnpUV-)3PBY9`=u?9B)BrRBv7b0NbmfXDc-tGIF z-{Qb1|Jt*mK*LM)Sw-_kU_4kcP>7zWj(1kKW)DigbpwH7S8d&1KcIEpih?s};30_K z#K1!j;5yY(F}e4K1s4Vbfhg`GDnq6W#Hq&X+xG=x5q4$qyZ(I_Ujd_P_df2$~%FM2u{;rsf<`P662D04XOrh(a!0% zAlB-hHOV`DG;oZ%7tZz$imih4o99WmqcehB9tNMxo+@DA2+z%gLE+lC)~kTM*>9%hy)pv~ytREmusg$prJs@Y1O&VFpYqB!J+3`(0qZ}Kd*%X<|0|DA(1^;C zbA`@9+veEZc0u7Fq7x@HknyqC!^IP)gtyhuL);dt&!=OJY&M`b8!IE3)#A83e!-kM zqI+pte^O?!wF(@V**UVH_m&+T-g7G))^iXU9SfNg4=p?5`W!|EsPugH*tOFgR45_8 zs{%xT9QfkmwlqOx)bd0LA9MEIW$q8HAgL4>GD%Q&f)Xj~I4t}hbx&AuGE zQN?2p)gS7M>QjhfZeSt*H_QBXIRrazW-R&1IXJR@TJKZqaRpu%R>|r>y5A;poZ`)E zGVLsec=$&8pThJ{y_KApDuYQ=e8k2An)U#tI%n%lpWIv^=0j$qsd+QbUmtcLy(;b))A=W#LOeXQHiuBVA{7J zqYW4oJqgO=-upZDpdKd9z4z^ybYg4zZRKKp91A$JLE^>hf>7+X-Dc?bs}=wNRKl4Z zNjmw4i&>`aQLLaI@qGP*qvMF}ykc+Xc=Yp=M2>!xsUV|Wa3`P{iQ|`>UzR}w4+Gpj z`DgIu!euIWY2Lu9!hU8QxgK43;BEd{1LWDmq%!2G>q+rpKfqSMvvlP*#InRlACH-7^70zuYU)a8$jL z{l@W0NhP4gC>w#Vyht(Y@wpX+_cuXowX7VG?7c_Zw8YPl!*ji%xa zcV~suACwE7W$wia5Ag#_Q5#m}ZS~`F2)(b|zVblcj_z0sMA2lXB-0O>G)g=3s_Ma>1TF)N^rOMA4VBIrWk_#9);S^&+h2{ zqWpc-9a1Dd-LSQ}e&2i`Pz4(=KRshXLmbgi>AC$&VJ080CPl19x@ldIx2%2Td24bP z6W~v{A4)Fj;5-Ze91`wtB6jU8Ks34JLr}PL;Y3YgOci6!WCw}|Vw#G-f0_!pR%7M| z(PdIr1aGAZ%aO1zE}KnXT6+MdB6-ff{B&=_?Sa_GSAch>?>~;3jqMXJ^vKzTxXI0I z@EDp3P49lQsv=CR=temf<^_SdHQWmBG?(iom1X6tqnhS76LomHEW#ZX)l=0ZxP-Z% z|MKEuhaY1_R67>N;*)cNH~nqFtNnURm^F}eq@8raKn2lLjqab$r8`GpW%=bc0)E0! zNI~5A(`(`n#jOUw;=VAtHCEJGOeUT=LnvcZGT)HF3y^wJbGnqqN%qdl^+?)e5 zFYR!}lWP+1W6h!FgqGXX#R2!ZsbSIC?)K*np4$Z7uCmg9mP{p_`Mz^pE-ULm zg|B#Gl0WUp8fr5%-phjz{lm6T3u@q@vSwLpR*rl4+QpXOHc~4kExD>np$sUPYKK;c zQ5Wrd2wpX?Y?`f9??VU;xg{YZ4i%CU`_2gI|7lu-cYz9incQsT0&zY;c|D;9*&8#t zSuG(wZ_ia{{1rz=tY!?;MRmic_?J#aTAHd4&rFGh(@z4;)46Ge98T{aUO{7rSVtRUKO|V-_y69LN;01jOtHR(Y zacZ@Zi(jQKeQU#RKr%z9CYtVYJh>1OeeC~^}U~Vs3{Kz5@Nb* z-`@(gcKCV7$j;Wa5pPxPX!X>qt2YZY4KgPVoN4fT-N>sxxQP43OqpYQZ@|&~#BPBm zG`s|e@XctUK6ll8l5g*#?e+8J^CP*4*Uk3m804Gs7&g-sh_Y&OPlpp0kAId%H7a5T z9?A1HCMKfbZ1r{i9Y+a@PWb)R)ogSnR<6C!dm}5|*!DHaPGfEAXGiT93S>~wUd#t~ zBONA_czBWP0H&sKoBz!DaN^wl(ka6oW1B!m$vUuY2OqnXO^+AWhtDb3ZY`EHao}6_ z=3HQ#;7KF!480ORMGk8++wt_1O*294yCZGWj!@JqIV^x0u${Bu2mp z8sYH-96wGP;T2vv23`LmgJ%4py>u#%mkt`z4GYo;Y#k|f?d#)DoOG3V%c1j>u?2t> zUbNaLINlPm3k)B5(RN#&L5;GqxVFnq_IKyh`)mI;-)ou$;bL)TpJ_i#f;=kv79V}j z4mNYjNeSPbi z*VgCIHT$SG1zM^}nQr;J_p+jgFlOp$Xf_Cdg^LdU;SE3StL|p9wuwg`G`_3Lk?nG8 zulc567(O5P2Fs0vgo@R&-_c<^XJH;>otC{Ot6wC&Vu^*_Hvf6tqNdN$Xbp}kNUwMq zz)*ib-Uxi>ZSOzQnrihYkY|nq7nYv1N|Q=8*L?&Xh|_inV}1HqMFV`g;T!$}Vkm!# zGm{N95E#*&SD+N4dLyN)Ymp)J_|vFTqLl;Ez$b)Ynl z5cuQ(;}$7zaX)aj=@z}_WgQy zQ16cF-5&c*W?z7OQoaJyQx2hU!B0w z>9-iUcA4I7MkAIo6JLWcEwaSKbPHfmcI75rHNx_Dnw!H2y(0%0WD5L@!$M8^_mBMK z@Af>{7G#@W^o}ou&*@9U`%Pmb%HaAG11v2=AKiq~+A9sgM0>fy`M+!gv3b*bOwwrb(un--g$w5<={*BoobhWz~#?`M~WiklVvTQlI1 zB8ER~yq_TZX(QdLgD8yi2e2PO z)O?#{dT}1YTx8ea`aKG=mg)(4%nt%1MGbFb-6aw$WD5K($YJ|?o^hiY&2f|W2*B#F z=|vnPJ+$4@eGDPDeR4x2jDGS!ue6y^USPdnU2}OXD)RL0glAeE zRRlY*s`D(1o`JiDJ+K%^*69IV{?aoBVsM<>!Si}ZFiaM>f4naQAK!dphhvf&^D!)hxWWC3$DGd-#=i%kx{d+l?2$*j$*B~Rvha3bVN}f zBnzrtq04GNyqb`uVvj_=?cO|1#mjaxvf1^%pIy#@K<@7!S-lv(4E7<2Wof!HFJ3W< zhD=)Omii+GKherb7b`lBm}EadF(InNBKH#?crqeYfF7q&9-k#_Mf`(L?*+YmK0DXX z9~%Yp^?Wzpml|Pzp)sdGOs%4qK8qAmECKi7=`MszVlLI; zW~g2^kHNEKUZd$lPr-ZIqo$=2Mq|3gCb>PaLeC&1?ghP7Tu;vX0}FB)fb@o^msha? zmMkaLE|c|bmrZlt=r zU37?OxLXQtWa(lKQk-zfq_65LR> z)cg!0?a^%$``*zoU%Cqs5)xhlgM}~J2&Bi*grF&AabWT4E?7J*b_($}ly9^RkbV|=-+s8RE!2PlaYze>b0SM`w*=j3T^2@Jd z#TRZpO5^kT)D#$I=ksI9ke#^_{R7=9!2tb6e%D{NDEy_ozF%=)zD%wb@@Ig2FH=#e z-#)?QjJY6(hN%d1n)D+D!=o-6e3w56dZe4y@gzRaG65VMoGX9MEyck1bIZBQHu1(! zlu^|Q*$qH7_6(>bv>d27?SqCYt&Pg-WmDEd^St8a-quV|2Z0;O0ZW^7zgKQ3oRU-rON@=2gnj3`9w_n3hZrECSH+5>^|5QlI`*p*?0J^iE61h|L27w z*$BME7%Vr3Nhps&4B(u`qJ?K80gd}U?mS}m9#$ZIzL{duv1iYMG)k9f`mURrnelxJ z1&71L+1`R2t2@SN<=kaixm}%zef!tRm-ao#JMwXC%XvrAKDY$3o!bs3R8Gs43>S?q zzbq3b&g%rXb>7rv&gRT2SoQNfZTiyH5gQi1g)BrL%pUlo4KxoZn+!e2blNf4C-j`l z^KnB*8l^{@5PqbOJG7;s(Mr+(Hcw5QFMPoWEu^^`LtBS${S{IEbUr*^ewC+eTNFt~ zNZr+Ok2V z0ZZYn4t7~&JC(VfHjQS6034kZ|Bj%=tIVH)f+bLtSCY5wIgoo@K?c~rBA!N&#pQ@7 zHVCpQ!J-u5QdeVLK0Eq02vU`R;G(qYME5qZhYisNu3}IUUrmXMUW}rIZ3C!Jr7jy} zB}UE~Q2IkpdO{5F#cgmqfy|zQnDw}}D;Kbf82B`s&@}Lmz|eS*f+a7xJ%(b!0A5u2(LRBJ1Pa0H z`!sbaHwjd$@N%|AePtVBm+yd7qs9c8akwr93Ro6wG}l$1A$1G8TjN~gAOkXUy2Xt*g&$miC&_|mf!qCJnI)ah~}Aq_2V1$e?4 zGrxS>U(H+#Irvr!EyUL_q$ttHITp$F!jQ4|w|nv}Q)_uU%G>h59z(eW8ID@8?r$<) zdyrrXd*bpXH&K{Yoqeo)uI?}p4ol!uaMzoK>PE6p6C;^L~h?_>ewaeGXLlZ*|~(= zw|Gsw`RPg;xAGP8BTS5$%INkdw=XB`LHgLm)hX5Jjr)5k4#pD`*hXm&?qrE#C}9_b^pbM*&}~@2b1s17V_DUA@}WVtnqOxV1eSE2rR7#7M3gF zyr8G6KLGVGQ!{+~|9*7Bd!4_&p0>qY4f0}C{hlcn<~gF(c!TpR#4$U;iJ#%!$q^dD zEqk^Z)gCs#zfAdy*evzvc5qehq+{NZJ%zm2IZnQzKP`12+!N=rKFfnr0!KS#YW78D zPrLQq*e>(P136{m@9_$umM>(x*lpWMqv)_7poFEpoQ%99)0k5&C*1Up!kvEl$l3Q$ z9#JElwmDj+(O{Bum~-O*Kz03P+Bf~`aFg`mrvcy%Y8ooome<}cxBOu{1=Agx)jw_e z@WBbvl2qQ6=r6r81Zi97D*vM)3?K6rhfg zzm$Xdb`j7_&@^=KqfBx>7@!K4f@2Xw21nX2dxhVaVx=s)^kX-!orftneM9qT9X_eK9NM}$kMnA$0E-{Br(3RiE<#MmQxWlDk&*NYrK_U|uXVzyb(*Uwk!N5$5Y_3c+4 z9L5h~1aUo|T@~PEt6kEFTbrLe@+!9Hc$AvMJuCO-QwPzzxCB_?>NWzsG2HTXCuY7d zZa(aqe4=k_b)`0Q!sSH;`NqOSX4hWymu|$DO8Bv_=+D!yNIqTjxm>US{sA~KhPp&O zd#b39Pu2$MA6wJ12zl#UD88?KFB4!xaPXM6pLq4KU*aV&>?o8k$?m(q1eAZd4#Dzm zZ}Z}UV3)5|-ZpUMj($vRwB@}nW3_A0g&h$dTgS|x*cO4V#0kh*e-RaMR!x8TEV1EE zzChIVQ1QFfS~5EW??r85$z0pnPrd4h1&(tLn|K_Cx-^x8n!Ib~_Av&VX!QTwhPY#l z#Fhj|h{dcAH`49<_w_6d(y+GhV|bLr3D-k#V*YpOx7Jb6fGdTNb_I0r)ys#?NvwgafgEn@9p($HQqfO0i=+lMv#JbCY>5g zUC#e)7kKXln)|S4pBC|fCW8*RBdK39ek3sG>@fC+&Gw)(VnB35nNa#<{-nn1>a@%C zR`-W9!GFFQ_+R5c?IGe{v}~|bVfy6NRgP8tR)6i36<{na-mvBHvf8kPFs)kAYKQ~# zAn;x9&#h#&|7n0NBH(%xWa7W8ej(}!)|;v!edl31UKQ$7@Xa;a`JntG?l~ZnWou({ zDKZTj(dZr3pdqa;p69ytKA*(!oA!B^Aeb@rASWnuMz$0i9JMv*o@8C*%synm?+L{F zK&xWn!a_C4=90>671W@y&|X@t-IzLVZ)!0-^Pd_wEB}saV-P+>n{&l?wGBL5zTVMS zPk1t<{<16eU~x@g@R0HH$B+@_kQcBd2h>9!s?w1Ef|F2>AxLaGHB}h$zPLPMyCgj; zR9hiybyNt`Y$WDV3AaCh+H~=?2{)2`DY&a9%8qZfi9|c`B)?nhzhUoy{4g+nh=L1k z2xx%7N3va94BMOxF3v6BIc#r*Js7jRxD6uc?HTgis%fQ!3xeUf|4hWazsP>4kDyzH z-Q8{Gne`F1PPzfSZUZAXtQ}DLwdYJx{6{#8xMiLkRtL8Lov_35O3CWrg^L#xKRe%V; zCEFVGxHV;v^a0!JtABf)Nd{Y(p~WWHx}HS5JtvQXkmKX^;NzH_{0-04IpMDMyY(|y zj=EV6N_d7ib!ND6c;)q{@8ff?fXehBKHT$lP$bA-F(Tr9%N%sh-;%SGRW^Gf%$Aj3 zleZ@Cn1_=}$)@pf@`9iB6fI1haKgQ9Cm$rotGy+wPJY1eV~+?N?5G~dt6=o`y(O*o zOQw$3O!YarYk0Aj2>7buxu<+2_&n7Bj3H}uaK`&!J7$EtnF1_T_@EVG7)r~-QMC#O zo5RazoGx{Dx?`as>J1hZlj`n|5^fwN<2AbT-Cxkw$yXRSqsETyna~JnGiS`GnuEbu zH^%u_t@s~szx^?hfjxT6k-`3Dw@$~P6EFHs-pQTC^br3Gzr-DOxF;OE&G^uoth z)CU2F@}SBUPal@6@;zOi8DiDLhLIuCT|)RfH#V${n7c^)xk1;le%2>^B=Lbbz_sva zt!1Npx;*6v1*2waY8`WDe2WQkBaC@i7z!IGB37M5~R^sr^v33{!I$sl2 zeN&uvbVZ#D;DOycV@XAy;v2ydNmnZ3ZziXXR=o!^?9kDd8I87f=Gcp5zI-WAE}G=! zp9cny>)1h@7?J`_+av+7{GXu?PjMTNmhv_0T7&d!Hz;4^$9f>DJ2}Jk!8M_cvmeh( z%B6O9u$>tm=G&(3qjLI#^{gk8mEeT@uBgJ^#OrS?%jiT1#ZxK8cDjG5(2`|$=yG1m zP#x#wQdKv95d4j*>v>g}URsuE*&TW|25oJ6eJ?4h8m@JYEB_9#BZOmmTAvYIOgy^; z>n&V<46}IKue1^~iWUG_?R%xOXfESZak=~l#_D@f^-Zdw+Fl67;qd$@HR{I=_DE(C z=f=oAYqN6=YUm?-08>D$zXzRN9zxBZ?*8!r?+@tkKq5A*z6&>50pt=qHsDBch1zLv z5sM2_Z@>cfTD37Y*BbKz?NMe4R&#xKHXM&XArVa|jYJN;xzf~rXk~dTeIOXP^U^dh zD5DO|91YTv2q;E^ateHk5FSZ=zb2`303sBxiBz%$FD`fD(z`v zTQLemZWEcAMG|H8dsQ18vuMXl4hgzewA}^LC%9&C$ zF|t7ng|ZNM3TjBN59O8>xbqY&y=K6^62(ux2BDZspN|1numQx-^DyQG+A2tv_>!nu zMd=~0Lsq}Lem5<$wMB|J)ROo39A*q5+{Iz1kweQ~A9;cbK#RnDzr3I}ZNH)6;f}+Z zT0~&~4e2mQ+h$=kr<)NpDy+9;X%)5X8#y89PJ6or&JKfzKXW#IHzOxzo9d*mWt~9y+O6!)cNeKDdo9y~) zj4jD0@t~3?8A5TDx8=hLslCYkN+{apx%v$lqLEv0Bi$Nl{v#uJbwV}tXX;#0Qra&( zbTe+^Pi7BkKR;}cDYxA{Gyeuz%Q9$iIO@t_#?8KH4}gjbQFUsQ0$?uaKDc>ydG<)6 z(A^%sd#OT4nEqY(RS4^?m4#6y1>XH}kdKLv)wWkP)?ZN~ADn+FtyxQ)hDM>MViDm( zrh=5sn5tEdr3O*4hUvNQmL!N&r?9mly5-P!E66~V9wz}H#^nd!>A%g^EFr~J)!)%^ zmE8y9+y$BjgQJB#zl7x-$1zthm+i6L%Ig4Pr++zo=es>Orbk9hVQZRT>6_{r1#So(Isv(%zpaR4Rb5^kgh7m{3F8tc9V=aeY02;D{>7d^o>2diz+x?~Q^z50P! zFlWD4+%>SB&KWrHlj@g~_L>+Q*6u(uZ9JaL=xZC|u1B%m63Lk}L6k$WJmj^JuX@(u zYC8e_%VXDIN@Z_ePJ}`<-j5PlQj7H}VLTvI%imam6&7MooR``0%r&hk%qpEE9?9FM zfmCq)q7r-xH_)qYM4e!GGm*;+!}PC=Vh&F7-+,qWUc(1+qXDfx7@=bp~~)(TqS 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 Psah$GwaNdR#Q^{S={DW} literal 0 HcmV?d00001 diff --git a/ayu.css b/ayu.css index cb836286..50d893e2 100644 --- a/ayu.css +++ b/ayu.css @@ -1 +1 @@ - body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3,h4{color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3,h4{border-bottom-color:#5c6773;}h4{border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;background-color:#191f26;}.sidebar{background-color:#14191f;}.logo-container.rust-logo>img{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);}*{scrollbar-color:#5c6773 transparent;}.sidebar{scrollbar-color:#5c6773 transparent;}::-webkit-scrollbar-track{background-color:transparent;}::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar::-webkit-scrollbar-track{background-color:transparent;}.sidebar::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar .current{background-color:transparent;color:#ffb44c;}.source .sidebar{background-color:#0f1419;}.sidebar .location{border-color:#000;background-color:#0f1419;color:#fff;}.sidebar-elems .location{color:#ff7733;}.sidebar-elems .location a{color:#fff;}.sidebar .version{border-bottom-color:#424c57;}.sidebar-title{border-top-color:#5c6773;border-bottom-color:#5c6773;}.block a:hover{background:transparent;color:#ffb44c;}.line-numbers span{color:#5c6773;}.line-numbers .line-highlighted{color:#708090;background-color:rgba(255,236,164,0.06);padding-right:4px;border-right:1px solid #ffb44c;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#5c6773;}.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#000 !important;background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ef57ff;}.content span.union,.content a.union{color:#98a01c;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#6380a0;}.content span.primitive,.content a.primitive{color:#32889b;}.content span.traitalias,.content a.traitalias{color:#57d399;}.content span.keyword,.content a.keyword{color:#de5249;}.content span.externcrate,.content span.mod,.content a.mod{color:#acccf9;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#99e0c9;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#cfbcf5;}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod,.content .fnname{color:#fdd687;}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:#a37acc;}pre.rust .comment{color:#788797;}pre.rust .doccomment{color:#a1ac88;}nav:not(.sidebar){border-bottom-color:#424c57;}nav.main .current{border-top-color:#5c6773;border-bottom-color:#5c6773;}nav.main .separator{border:1px solid #5c6773;}a{color:#c5c5c5;}body.source .example-wrap pre.rust a{background:#333;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#39AFD7;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search{color:#c5c5c5;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;border-color:#424c57;}.search-input{color:#ffffff;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;transition:box-shadow 150ms ease-in-out;}#crate-search+.search-input:focus{box-shadow:0 0 0 1px #148099,0 0 0 2px transparent;}.search-input:disabled{background-color:#3e3e3e;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable,.stab.deprecated,.stab.portability{color:#c5c5c5;background:#314559 !important;border-style:none !important;border-radius:4px;padding:3px 6px 3px 6px;}.stab.portability>code{color:#e6e1cf;background:none;}#help>div{background:#14191f;box-shadow:0px 6px 20px 0px black;border:none;border-radius:4px;}#help span.bottom,#help span.top{border-color:#5c6773;}.since{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}.line-numbers :target{background-color:transparent;}pre.rust .number,pre.rust .string{color:#b8cc52;}pre.rust .kw,pre.rust .kw-2,pre.rust .prelude-ty,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .op,pre.rust .lifetime{color:#ff7733;}pre.rust .macro,pre.rust .macro-nonterminal{color:#a37acc;}pre.rust .question-mark{color:#ff9011;}pre.rust .self{color:#36a3d9;font-style:italic;}pre.rust .attribute{color:#e6e1cf;}pre.rust .attribute .ident,pre.rust .attribute .op{color:#e6e1cf;}.example-wrap>pre.line-number{color:#5c67736e;border:none;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}.toggle-label,.code-attribute{color:#999;}:target,:target>*{background:rgba(255,236,164,0.06);}:target{border-right:3px solid rgba(255,180,76,0.85);}pre.compile_fail{border-left:2px solid rgba(255,0,0,.4);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.4);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;border:1px solid #5c6773;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;border-color:#5c6773;}.notable-traits-tooltiptext .notable{border-bottom-color:#5c6773;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}.search-input:focus{}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content span.type,.content a.type,.block a.current.type{}.content span.union,.content a.union,.block a.current.union{}pre.rust .lifetime{}.stab.unstable{}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){}.content span.enum,.content a.enum,.block a.current.enum{}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{}.content span.keyword,.content a.keyword,.block a.current.keyword{}pre.rust .comment{}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{}pre.rust .kw{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{}pre.rust .doccomment{}.stab.deprecated{}.content a.attr,.content a.derive,.content a.macro{}.stab.portability{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}.search-results a:focus span{}a.result-trait:focus{}a.result-traitalias:focus{}a.result-mod:focus,a.result-externcrate:focus{}a.result-mod:focus{}a.result-externcrate:focus{}a.result-enum:focus{}a.result-struct:focus{}a.result-union:focus{}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{}a.result-type:focus{}a.result-foreigntype:focus{}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{}a.result-constant:focus,a.result-static:focus{}a.result-primitive:focus{}a.result-keyword:focus{}@media (max-width:700px){.sidebar-menu{background-color:#14191f;border-bottom-color:#5c6773;border-right-color:#5c6773;}.sidebar-elems{background-color:#14191f;border-right-color:#5c6773;}#sidebar-filler{background-color:#14191f;border-bottom-color:#5c6773;}}kbd{color:#c5c5c5;background-color:#314559;border-color:#5c6773;border-bottom-color:#5c6773;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#5c6773;background-color:#0f1419;color:#fff;}#theme-picker>img,#settings-menu>img{filter:invert(100);}#copy-path{color:#fff;}#copy-path>img{filter:invert(70%);}#copy-path:hover>img{filter:invert(100%);}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#e0e0e0;}#theme-choices{border-color:#5c6773;background-color:#0f1419;}#theme-choices>button:not(:first-child){border-top-color:#5c6773;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:rgba(110,110,110,0.33);}@media (max-width:700px){#theme-picker{background:#0f1419;}}#all-types{background-color:#14191f;}#all-types:hover{background-color:rgba(70,70,70,0.33);}.search-results .result-name span.alias{color:#c5c5c5;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#14191f;}#sidebar-toggle:hover{background-color:rgba(70,70,70,0.33);}#source-sidebar{background-color:#14191f;}#source-sidebar>.title{color:#fff;border-bottom-color:#5c6773;}div.files>a:hover,div.name:hover{background-color:#14191f;color:#ffb44c;}div.files>.selected{background-color:#14191f;color:#ffb44c;}.setting-line>.title{border-bottom-color:#5c6773;}input:checked+.slider{background-color:#ffb454 !important;} \ No newline at end of file + body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3,h4{color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3,h4{border-bottom-color:#5c6773;}h4{border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;background-color:#191f26;}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:#14191f;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);}*{scrollbar-color:#5c6773 #24292f;}.sidebar{scrollbar-color:#5c6773 #24292f;}::-webkit-scrollbar-track{background-color:transparent;}::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar::-webkit-scrollbar-track{background-color:transparent;}.sidebar::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar .current,.sidebar a:hover{background-color:transparent;color:#ffb44c;}.source .sidebar{background-color:#14191f;}.sidebar-elems .location{color:#ff7733;}.line-numbers span{color:#5c6773;}.line-numbers .line-highlighted{color:#708090;background-color:rgba(255,236,164,0.06);padding-right:4px;border-right:1px solid #ffb44c;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#5c6773;}.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#000 !important;background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ffa0a5;}.content span.union,.content a.union{color:#ffa0a5;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#39AFD7;}.content span.primitive,.content a.primitive{color:#ffa0a5;}.content span.traitalias,.content a.traitalias{color:#39AFD7;}.content span.keyword,.content a.keyword{color:#39AFD7;}.content span.externcrate,.content span.mod,.content a.mod{color:#39AFD7;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#ffa0a5;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#39AFD7;}.content span.type,.content a.type,.block a.current.type{color:#39AFD7;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#39AFD7;}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod,.content .fnname{color:#fdd687;}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:#a37acc;}.sidebar a{color:#53b1db;}.sidebar a.current.type{color:#53b1db;}.sidebar a.current.associatedtype{color:#53b1db;}pre.rust .comment{color:#788797;}pre.rust .doccomment{color:#a1ac88;}nav.main .current{border-top-color:#5c6773;border-bottom-color:#5c6773;}nav.main .separator{border:1px solid #5c6773;}a{color:#39AFD7;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,.in-band a{color:#c5c5c5;}.sidebar h2 a,.sidebar h3 a{color:white;}.search-results a{color:#0096cf;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search,.search-input{background-color:#141920;border-color:#424c57;color:#c5c5c5;}.search-input{color:#ffffff;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable,.stab.deprecated,.stab.portability{color:#c5c5c5;background:#314559 !important;border-style:none !important;border-radius:4px;padding:3px 6px 3px 6px;}.stab.portability>code{color:#e6e1cf;background:none;}#help>div{background:#14191f;box-shadow:0px 6px 20px 0px black;border:none;border-radius:4px;}#help span.bottom,#help span.top{border-color:#5c6773;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}.line-numbers :target{background-color:transparent;}pre.rust .number,pre.rust .string{color:#b8cc52;}pre.rust .kw,pre.rust .kw-2,pre.rust .prelude-ty,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .op,pre.rust .lifetime{color:#ff7733;}pre.rust .macro,pre.rust .macro-nonterminal{color:#a37acc;}pre.rust .question-mark{color:#ff9011;}pre.rust .self{color:#36a3d9;font-style:italic;}pre.rust .attribute{color:#e6e1cf;}pre.rust .attribute .ident,pre.rust .attribute .op{color:#e6e1cf;}.example-wrap>pre.line-number{color:#5c67736e;border:none;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}.toggle-label,.code-attribute{color:#999;}:target{background:rgba(255,236,164,0.06);border-right:3px solid rgba(255,180,76,0.85);}pre.compile_fail{border-left:2px solid rgba(255,0,0,.4);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.4);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;border:1px solid #5c6773;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;border-color:#5c6773;}.notable-traits-tooltiptext .notable{border-bottom-color:#5c6773;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}.search-input:focus{}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content span.typedef,.content a.typedef,.block a.current.typedef{}.content span.union,.content a.union,.block a.current.union{}pre.rust .lifetime{}.stab.unstable{}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){}.content span.enum,.content a.enum,.block a.current.enum{}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{}.content span.keyword,.content a.keyword,.block a.current.keyword{}pre.rust .comment{}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{}pre.rust .kw{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{}pre.rust .doccomment{}.stab.deprecated{}.content a.attr,.content a.derive,.content a.macro{}.stab.portability{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}.search-results a:focus span{}a.result-trait:focus{}a.result-traitalias:focus{}a.result-mod:focus,a.result-externcrate:focus{}a.result-mod:focus{}a.result-externcrate:focus{}a.result-enum:focus{}a.result-struct:focus{}a.result-union:focus{}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{}a.result-type:focus{}a.result-associatedtype:focus{}a.result-foreigntype:focus{}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{}a.result-constant:focus,a.result-static:focus{}a.result-primitive:focus{}a.result-keyword:focus{}.sidebar a.current.enum{}.sidebar a.current.struct{}.sidebar a.current.foreigntype{}.sidebar a.current.attr,.sidebar a.current.derive,.sidebar a.current.macro{}.sidebar a.current.union{}.sidebar a.current.constant .sidebar a.current.static{}.sidebar a.current.primitive{}.sidebar a.current.externcrate .sidebar a.current.mod{}.sidebar a.current.trait{}.sidebar a.current.traitalias{}.sidebar a.current.fn,.sidebar a.current.method,.sidebar a.current.tymethod{}.sidebar a.current.keyword{}@media (max-width:700px){.sidebar-menu{background-color:#14191f;border-bottom-color:#5c6773;border-right-color:#5c6773;}.sidebar-elems{background-color:#14191f;border-right-color:#5c6773;}#sidebar-filler{background-color:#14191f;border-bottom-color:#5c6773;}}kbd{color:#c5c5c5;background-color:#314559;border-color:#5c6773;border-bottom-color:#5c6773;box-shadow:inset 0 -1px 0 #5c6773;}#theme-picker,#settings-menu,#help-button{border-color:#5c6773;background-color:#0f1419;color:#fff;}#theme-picker>img,#settings-menu>img{filter:invert(100);}#copy-path{color:#fff;}#copy-path>img{filter:invert(70%);}#copy-path:hover>img{filter:invert(100%);}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#e0e0e0;}#theme-choices{border-color:#5c6773;background-color:#0f1419;}#theme-choices>button:not(:first-child){border-top-color:#5c6773;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:rgba(110,110,110,0.33);}@media (max-width:700px){#theme-picker{background:#0f1419;}}.search-results .result-name span.alias{color:#c5c5c5;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#14191f;}#sidebar-toggle:hover{background-color:rgba(70,70,70,0.33);}#source-sidebar{background-color:#14191f;}#source-sidebar>.title{color:#fff;border-bottom-color:#5c6773;}div.files>a:hover,div.name:hover{background-color:#14191f;color:#ffb44c;}div.files>.selected{background-color:#14191f;color:#ffb44c;}.setting-line>.title{border-bottom-color:#5c6773;}input:checked+.slider{background-color:#ffb454 !important;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(15,20,25,1),rgba(15,20,25,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(15,20,25,1),rgba(15,20,25,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:#898989;} \ No newline at end of file diff --git a/dark.css b/dark.css index cb246dc8..a31f453f 100644 --- a/dark.css +++ b/dark.css @@ -1 +1 @@ -body{background-color:#353535;color:#ddd;}h1,h2,h3,h4{color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3,h4{border-bottom-color:#d2d2d2;}.in-band{background-color:#353535;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#2A2A2A;}pre,.rustdoc.source .example-wrap{background-color:#2A2A2A;}.sidebar{background-color:#505050;}.logo-container.rust-logo>img{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff)}*{scrollbar-color:rgb(64,65,67) #717171;}.sidebar{scrollbar-color:rgba(32,34,37,.6) transparent;}::-webkit-scrollbar-track{background-color:#717171;}::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar::-webkit-scrollbar-track{background-color:#717171;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar .current{background-color:#333;}.source .sidebar{background-color:#353535;}.sidebar .location{border-color:#fff;background:#575757;color:#DDD;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#444;}.line-numbers span{color:#3B91E2;}.line-numbers .line-highlighted{background-color:#0a042f !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#DDD;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#eee !important;background-color:#616161;}.search-results a:focus span{color:#eee !important;}a.result-trait:focus{background-color:#013191;}a.result-traitalias:focus{background-color:#013191;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-mod:focus{background-color:#803a1b;}a.result-externcrate:focus{background-color:#396bac;}a.result-enum:focus{background-color:#5b4e68;}a.result-struct:focus{background-color:#194e9f;}a.result-union:focus{background-color:#b7bd49;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#4950ed;}a.result-type:focus{background-color:#38902c;}a.result-foreigntype:focus{background-color:#b200d6;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#217d1c;}a.result-constant:focus,a.result-static:focus{background-color:#0063cc;}a.result-primitive:focus{background-color:#00708a;}a.result-keyword:focus{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#82b089;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#ff7f00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#dd7de8;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#09bd00;}.content span.union,.content a.union,.block a.current.union{color:#a6ae37;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#82a5c9;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#43aec7;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#bda000;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b397da;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#2BAB63;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#de5249;}pre.rust .comment{color:#8d8d8b;}pre.rust .doccomment{color:#8ca375;}nav:not(.sidebar){border-bottom-color:#4e4e4e;}nav.main .current{border-top-color:#eee;border-bottom-color:#eee;}nav.main .separator{border-color:#eee;}a{color:#ddd;}body.source .example-wrap pre.rust a{background:#333;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#D2991D;}a.test-arrow{color:#dedede;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search{color:#111;background-color:#f0f0f0;border-color:#000;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input{color:#111;background-color:#f0f0f0;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input:focus{border-color:#008dfd;}.search-input:disabled{background-color:#c5c4c4;}#crate-search+.search-input:focus{box-shadow:0 0 8px 4px #078dd8;}.module-item .stab,.import-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;color:#2f2f2f;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.since{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#ddd;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#ab8ac1;}pre.rust .kw-2,pre.rust .prelude-ty{color:#769acb;}pre.rust .number,pre.rust .string{color:#83a300;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#ee6868;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#d97f26;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#4a4949;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target,:target>*{background-color:#494a3d;}:target{border-right:3px solid #bb7410;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.8);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.8);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.8);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.8);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;border-color:#777;}.notable-traits-tooltiptext .notable{border-bottom-color:#d2d2d2;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#505050;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#505050;border-right-color:#000;}#sidebar-filler{background-color:#505050;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background:#f0f0f0;color:#000;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#ffb900;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(65%);}#theme-choices{border-color:#e0e0e0;background-color:#353535;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#4e4e4e;}@media (max-width:700px){#theme-picker{background:#f0f0f0;}}#all-types{background-color:#505050;}#all-types:hover{background-color:#606060;}.search-results .result-name span.alias{color:#fff;}.search-results .result-name span.grey{color:#ccc;}#sidebar-toggle{background-color:#565656;}#sidebar-toggle:hover{background-color:#676767;}#source-sidebar{background-color:#565656;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#444;}div.files>.selected{background-color:#333;}.setting-line>.title{border-bottom-color:#ddd;} \ No newline at end of file +body{background-color:#353535;color:#ddd;}h1,h2,h3,h4{color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3,h4{border-bottom-color:#d2d2d2;}.in-band{background-color:#353535;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#2A2A2A;}pre,.rustdoc.source .example-wrap{background-color:#2A2A2A;}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:#505050;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff)}*{scrollbar-color:rgb(64,65,67) #717171;}.sidebar{scrollbar-color:rgba(32,34,37,.6) #5a5a5a;}::-webkit-scrollbar-track{background-color:#717171;}::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar::-webkit-scrollbar-track{background-color:#717171;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar .current,.sidebar a:hover{background:#444;}.source .sidebar{background-color:#565656;}.line-numbers span{color:#3B91E2;}.line-numbers .line-highlighted{background-color:#0a042f !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#DDD;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#eee !important;background-color:#616161;}.search-results a:focus span{color:#eee !important;}a.result-trait:focus{background-color:#013191;}a.result-traitalias:focus{background-color:#013191;}a.result-mod:focus,a.result-externcrate:focus{background-color:#884719;}a.result-enum:focus{background-color:#194e9f;}a.result-struct:focus{background-color:#194e9f;}a.result-union:focus{background-color:#194e9f;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#4950ed;}a.result-type:focus{background-color:#194e9f;}a.result-associatedtype:focus{background-color:#884719;}a.result-foreigntype:focus{background-color:#194e9f;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#217d1c;}a.result-constant:focus,a.result-static:focus{background-color:#884719;}a.result-primitive:focus{background-color:#194e9f;}a.result-keyword:focus{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#2dbfb8;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#2dbfb8;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#D2991D;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#2dbfb8;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#09bd00;}.content span.union,.content a.union,.block a.current.union{color:#2dbfb8;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#D2991D;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2dbfb8;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#D2991D;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b78cf2;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#2BAB63;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#D2991D;}.sidebar a{color:#fdbf35;}.sidebar a.current.enum{color:#12ece2;}.sidebar a.current.struct{color:#12ece2;}.sidebar a.current.type{color:#12ece2;}.sidebar a.current.associatedtype{color:#fdbf35;}.sidebar a.current.foreigntype{color:#12ece2;}.sidebar a.current.attr,.sidebar a.current.derive,.sidebar a.current.macro{color:#0be900;}.sidebar a.current.union{color:#12ece2;}.sidebar a.current.constant .sidebar a.current.static{color:#fdbf35;}.sidebar a.current.primitive{color:#12ece2;}.sidebar a.current.externcrate .sidebar a.current.mod{color:#fdbf35;}.sidebar a.current.trait{color:#cca7ff;}.sidebar a.current.traitalias{color:#cca7ff;}.sidebar a.current.fn,.sidebar a.current.method,.sidebar a.current.tymethod{color:#32d479;}.sidebar a.current.keyword{color:#fdbf35;}pre.rust .comment{color:#8d8d8b;}pre.rust .doccomment{color:#8ca375;}nav.main .current{border-top-color:#eee;border-bottom-color:#eee;}nav.main .separator{border-color:#eee;}a{color:#D2991D;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,.in-band a{color:#ddd;}.search-results a{color:#ddd;}a.test-arrow{color:#dedede;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search,.search-input{color:#111;background-color:#f0f0f0;border-color:#000;}.search-input{border-color:#e0e0e0;}.search-input:focus{border-color:#008dfd;}.module-item .stab,.import-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;color:#2f2f2f;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#ddd;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#ab8ac1;}pre.rust .kw-2,pre.rust .prelude-ty{color:#769acb;}pre.rust .number,pre.rust .string{color:#83a300;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#ee6868;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#d97f26;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#4a4949;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background-color:#494a3d;border-right:3px solid #bb7410;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.8);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.8);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.8);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.8);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;border-color:#777;}.notable-traits-tooltiptext .notable{border-bottom-color:#d2d2d2;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#505050;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#505050;border-right-color:#000;}#sidebar-filler{background-color:#505050;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow:inset 0 -1px 0 #c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background:#f0f0f0;color:#000;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#ffb900;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(65%);}#theme-choices{border-color:#e0e0e0;background-color:#353535;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#4e4e4e;}@media (max-width:700px){#theme-picker{background:#f0f0f0;}}.search-results .result-name span.alias{color:#fff;}.search-results .result-name span.grey{color:#ccc;}#sidebar-toggle{background-color:#565656;}#sidebar-toggle:hover{background-color:#676767;}#source-sidebar{background-color:#565656;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#444;}div.files>.selected{background-color:#333;}.setting-line>.title{border-bottom-color:#ddd;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(53,53,53,1),rgba(53,53,53,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(53,53,53,1),rgba(53,53,53,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:#898989;} \ No newline at end of file diff --git a/favicon-16x16.png b/favicon-16x16.png index 7cfe6c13550d31bc31355616bbb9cb77fd1b25ef..ea4b45cae1618e6e20e6d61897da953f34b66b30 100644 GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP zfk$L9P|ym58ULAS1_A}yOFVsD*`G1;@(QxEEoEaloaX$3oUhmn3B1b>^ zXS8u>Ub4$r*u2F1FEiJ>rQJ&x%nC}Q!>*kacg*^JAVaGgCxj?;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UT zt3o15f)dLW3X1a6GILTDN-7Id6*3D-k{K8(<~;ty!%-Nfp>fLp^cl~mK@7~w+4yl)LyARcIVNxmKrUYOD%pfJyWON=)B<95>De^Rm5G6M}j3YLqKtM+@IBeEw z^+wbz;o5ak@SEL6xUikVXe8WJEFP9pGywO3uTmwxha}|Wr z9u|-rLXDJ)G2t{3kpl`W;YO%bBuJ+P21kd?(GxW6gW)vnCxqExX54RUQWHS;@lhhf zJ|gVd``1Y^@=zFJJK>(g3hajVzz_h_1Q{78U@+bBlQht;p6z!frXHv{LPhwYz<<`72lXv!(d1nyYeRki} zG-TB$r};*eD+wIao;8*Q1z1lX*pMIAo8KMMp3kpQSfT>9<7X{yl)7mmZ&HHTmt$V^;c~|?Lwt01Kia(Ww7QAk1 z37VI_XzHZ4&TD(hrV_xFzrp5h zIDA-gJMuv0N4O`)y}GEDLzI5DRqcQGw4eZ{gx8^nswsmyuR8`H8qrt&We_mQ?E71KoB@x@ws?}G)`?crAQn;UN4 z6pH^kmG!J);&{3;dAl$;_(V^Szpt%NFJJz= zy0-T8z<~J6?w>4P{r&x!3m1l6=;+9(f6gXZaCUdB?(m(=>C3y+SzUDzf4JRP!@oM< Yn%3fxa@a2CEqi4B`cIb_Lo1C76=D-CY>|xA&jf59DzcctjQh4J-j+#zTiQ z{eXh(C7!;n?9Ui^c?CJ9NzPUVYP#TA@8THZaeV4k{|uQ@5%v%Mo3bzGZF!c^x^=C` zhHKv@HF0_^l>YYM;# zdv;6xszp;GkH33cBf+{*v~k5#&NUpON!?;Ev$+GdYkdeQs*|0sy8Ja$=}*%pk0;wUI6kj8>pab;RB|?r|9btON43%O zg14}%`sb~76S;FEa7#bgUrp`GgzmIx+C8fo4R{Xg^b!cDajo7vM`lG~6)lI5;Srs=b6um6iKJ!SX)NEp9#PN+|}%e}V_2KxH>htxeA znb$YwKi;zJflJKQpM4BxwPL*9?Q=O6|8b?(^suk1AOG_G;nc8PczfXd`s8!vb$_F?dYQ^q2@TfY?;Y>EddKE{*Pd`JoN0OL#de$96F43E33?AWWO6#K5N-MHoSw=C__HQR!|U%lo#>vXA?@7XKO zI@g!od0zEj{=9aZqgejDm%v1?TH+c}l9E`GYL#4+3Zxi}42+C)4GeV+jYABLtqkkU ztqd%*4GgRd46-f4|Dx!~%}>cpt3=m<&>)ri9++JjBtcdL=ckpFCl;kLl$V$5W#(lU zCnpx9>g5-u&wghk1ymGX6%tVrlvu7%P?VpRnUkteQdy9ykXaB?lFYzRG3W6o9*)8= z4UJR&r_Xpk4Pszc=GIH*7FHJao-D#Ftl-jMayW%qd2@)u=^Iy09657D<_P=g29E_^ adJM0`1xr3TnN9`T!QkoY=d#Wzp$PyWN8Zf< literal 2919 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 IIpoLx0#^I3DgXcg diff --git a/implementors/actix_auth_middleware/trait.GetLoginRoute.js b/implementors/actix_auth_middleware/trait.GetLoginRoute.js new file mode 100644 index 00000000..1cc84ed3 --- /dev/null +++ b/implementors/actix_auth_middleware/trait.GetLoginRoute.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["mcaptcha"] = [{"text":"impl GetLoginRoute for Auth","synthetic":false,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl GetLoginRoute for Routes","synthetic":false,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl GetLoginRoute for Auth","synthetic":false,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl GetLoginRoute for Routes","synthetic":false,"types":["mcaptcha::pages::routes::Routes"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/actix_service/trait.Service.js b/implementors/actix_service/trait.Service.js deleted file mode 100644 index ef2b327b..00000000 --- a/implementors/actix_service/trait.Service.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl<S> Service<ServiceRequest> for CheckLoginMiddleware<S> where
    S: Service<ServiceRequest, Response = ServiceResponse<AnyBody>, Error = Error>,
    S::Future: 'static, 
","synthetic":false,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/actix_service/transform/trait.Transform.js b/implementors/actix_service/transform/trait.Transform.js deleted file mode 100644 index d7da98c9..00000000 --- a/implementors/actix_service/transform/trait.Transform.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl<S> Transform<S, ServiceRequest> for CheckLogin where
    S: Service<ServiceRequest, Response = ServiceResponse<AnyBody>, Error = Error>,
    S::Future: 'static, 
","synthetic":false,"types":["mcaptcha::middleware::auth::CheckLogin"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/clone/trait.Clone.js b/implementors/core/clone/trait.Clone.js index 9d3bf01a..65f4e890 100644 --- a/implementors/core/clone/trait.Clone.js +++ b/implementors/core/clone/trait.Clone.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Clone for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Clone for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Clone for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Clone for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Clone for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Clone for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Clone for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Clone for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Clone for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Clone for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Clone for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Clone for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Clone for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Clone for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Clone for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Clone for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Clone for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Clone for BuildDetailsBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Clone for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Clone for HealthBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Clone for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Clone for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Clone for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Clone for Date","synthetic":false,"types":["mcaptcha::date::Date"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a, K: Clone, V: Clone> Clone for SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
","synthetic":false,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl<'a> Clone for ErrorPage<'a>","synthetic":false,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl<'a> Clone for AdvanceIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl<'a> Clone for EasyIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Clone for McaptchaConfig","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Clone for Level","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Clone for AdvanceEditPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl<'a> Clone for EasyEditPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Clone for McaptchaConfig","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Clone for Level","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Clone for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl Clone for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Clone for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Clone for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Clone for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Clone for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl Clone for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl Clone for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl Clone for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Clone for Stats","synthetic":false,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Clone for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::widget::IndexPage"]}]; -implementors["tests_migrate"] = [{"text":"impl Clone for Server","synthetic":false,"types":["tests_migrate::settings::Server"]},{"text":"impl Clone for Captcha","synthetic":false,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Clone for DefaultDifficultyStrategy","synthetic":false,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Clone for Smtp","synthetic":false,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Clone for DatabaseBuilder","synthetic":false,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Clone for Database","synthetic":false,"types":["tests_migrate::settings::Database"]},{"text":"impl Clone for Redis","synthetic":false,"types":["tests_migrate::settings::Redis"]},{"text":"impl Clone for Settings","synthetic":false,"types":["tests_migrate::settings::Settings"]}]; +implementors["mcaptcha"] = [{"text":"impl Clone for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Clone for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Clone for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Clone for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Clone for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Clone for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Clone for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Clone for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Clone for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Clone for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Clone for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Clone for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Clone for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Clone for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Clone for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Clone for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Clone for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Clone for BuildDetailsBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Clone for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Clone for HealthBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Clone for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Clone for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Clone for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Clone for Date","synthetic":false,"types":["mcaptcha::date::Date"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a, K: Clone, V: Clone> Clone for SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
","synthetic":false,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl<'a> Clone for ErrorPage<'a>","synthetic":false,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl<'a> Clone for AdvanceIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl<'a> Clone for EasyIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Clone for McaptchaConfig","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Clone for Level","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Clone for AdvanceEditPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl<'a> Clone for EasyEditPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Clone for McaptchaConfig","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Clone for Level","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Clone for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl Clone for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Clone for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Clone for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Clone for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Clone for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl Clone for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl Clone for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl Clone for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Clone for Stats","synthetic":false,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Clone for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::widget::IndexPage"]}]; +implementors["tests_migrate"] = [{"text":"impl Clone for Server","synthetic":false,"types":["tests_migrate::settings::Server"]},{"text":"impl Clone for Captcha","synthetic":false,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Clone for DefaultDifficultyStrategy","synthetic":false,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Clone for Smtp","synthetic":false,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Clone for DatabaseBuilder","synthetic":false,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Clone for Database","synthetic":false,"types":["tests_migrate::settings::Database"]},{"text":"impl Clone for Redis","synthetic":false,"types":["tests_migrate::settings::Redis"]},{"text":"impl Clone for Settings","synthetic":false,"types":["tests_migrate::settings::Settings"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/cmp/trait.PartialEq.js b/implementors/core/cmp/trait.PartialEq.js index 9ac728f8..9a643807 100644 --- a/implementors/core/cmp/trait.PartialEq.js +++ b/implementors/core/cmp/trait.PartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl PartialEq<SmtpErrorWrapper> for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl PartialEq<ServiceError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl PartialEq<PageError> for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]}]; +implementors["mcaptcha"] = [{"text":"impl PartialEq<SmtpErrorWrapper> for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl PartialEq<ServiceError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl PartialEq<PageError> for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/convert/trait.From.js b/implementors/core/convert/trait.From.js index 91fa9da8..e25e7bc1 100644 --- a/implementors/core/convert/trait.From.js +++ b/implementors/core/convert/trait.From.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl From<ChangePasswordReqest> for UpdatePassword","synthetic":false,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl From<UninitializedFieldError> for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl From<String> for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl From<UninitializedFieldError> for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl From<String> for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl From<Notification> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl From<CredsError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<ValidationErrors> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<ParseError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<CaptchaError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<Error> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<Error> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<RecvError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<MailboxError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<Error> for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]},{"text":"impl From<ServiceError> for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]},{"text":"impl From<Notification> for Notification","synthetic":false,"types":["mcaptcha::pages::panel::notifications::Notification"]}]; +implementors["mcaptcha"] = [{"text":"impl From<ChangePasswordReqest> for UpdatePassword","synthetic":false,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl From<UninitializedFieldError> for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl From<String> for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl From<UninitializedFieldError> for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl From<String> for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl From<Notification> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl From<CredsError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<ValidationErrors> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<ParseError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<CaptchaError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<Error> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<Error> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<RecvError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<MailboxError> for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl From<Error> for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]},{"text":"impl From<ServiceError> for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]},{"text":"impl From<Notification> for Notification","synthetic":false,"types":["mcaptcha::pages::panel::notifications::Notification"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/default/trait.Default.js b/implementors/core/default/trait.Default.js index ca418ae6..de66c4cf 100644 --- a/implementors/core/default/trait.Default.js +++ b/implementors/core/default/trait.Default.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Default for BuildDetailsBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Default for HealthBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Default for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Default for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a> Default for AdvanceIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl<'a> Default for EasyIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Default for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]}]; +implementors["mcaptcha"] = [{"text":"impl Default for BuildDetailsBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Default for HealthBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Default for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Default for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a> Default for AdvanceIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl<'a> Default for EasyIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Default for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js index 9774c9b8..6298d052 100644 --- a/implementors/core/fmt/trait.Debug.js +++ b/implementors/core/fmt/trait.Debug.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Debug for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Debug for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Debug for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Debug for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Debug for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Debug for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Debug for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Debug for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Debug for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Debug for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Debug for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Debug for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Debug for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Debug for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Debug for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Debug for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Debug for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Debug for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Debug for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Debug for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Debug for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Debug for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Debug for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Debug for Date","synthetic":false,"types":["mcaptcha::date::Date"]},{"text":"impl Debug for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Debug for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Debug for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]},{"text":"impl Debug for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl Debug for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Debug for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Debug for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Debug for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Debug for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl Debug for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl Debug for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl Debug for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Debug for Stats","synthetic":false,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Debug for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; -implementors["tests_migrate"] = [{"text":"impl Debug for Server","synthetic":false,"types":["tests_migrate::settings::Server"]},{"text":"impl Debug for Captcha","synthetic":false,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Debug for DefaultDifficultyStrategy","synthetic":false,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Debug for Smtp","synthetic":false,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Debug for DatabaseBuilder","synthetic":false,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Debug for Database","synthetic":false,"types":["tests_migrate::settings::Database"]},{"text":"impl Debug for Redis","synthetic":false,"types":["tests_migrate::settings::Redis"]},{"text":"impl Debug for Settings","synthetic":false,"types":["tests_migrate::settings::Settings"]}]; +implementors["mcaptcha"] = [{"text":"impl Debug for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Debug for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Debug for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Debug for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Debug for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Debug for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Debug for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Debug for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Debug for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Debug for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Debug for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Debug for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Debug for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Debug for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Debug for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Debug for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Debug for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Debug for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Debug for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Debug for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Debug for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Debug for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Debug for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Debug for Date","synthetic":false,"types":["mcaptcha::date::Date"]},{"text":"impl Debug for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Debug for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Debug for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]},{"text":"impl Debug for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl Debug for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Debug for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Debug for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Debug for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Debug for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl Debug for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl Debug for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl Debug for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Debug for Stats","synthetic":false,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Debug for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; +implementors["tests_migrate"] = [{"text":"impl Debug for Server","synthetic":false,"types":["tests_migrate::settings::Server"]},{"text":"impl Debug for Captcha","synthetic":false,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Debug for DefaultDifficultyStrategy","synthetic":false,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Debug for Smtp","synthetic":false,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Debug for DatabaseBuilder","synthetic":false,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Debug for Database","synthetic":false,"types":["tests_migrate::settings::Database"]},{"text":"impl Debug for Redis","synthetic":false,"types":["tests_migrate::settings::Redis"]},{"text":"impl Debug for Settings","synthetic":false,"types":["tests_migrate::settings::Settings"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.Display.js b/implementors/core/fmt/trait.Display.js index 5355b45a..5f5f4f05 100644 --- a/implementors/core/fmt/trait.Display.js +++ b/implementors/core/fmt/trait.Display.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Display for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Display for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Display for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Display for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Display for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]}]; +implementors["mcaptcha"] = [{"text":"impl Display for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Display for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Display for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Display for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Display for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js index 67e39339..26f95268 100644 --- a/implementors/core/marker/trait.Freeze.js +++ b/implementors/core/marker/trait.Freeze.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Freeze for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Freeze for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Freeze for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Freeze for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Freeze for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Freeze for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Freeze for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Freeze for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Freeze for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Freeze for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Freeze for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Freeze for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Freeze for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Freeze for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Freeze for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Freeze for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Freeze for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Freeze for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Freeze for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Freeze for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Freeze for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Freeze for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Freeze for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Freeze for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Freeze for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Freeze for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Freeze for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Freeze for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Freeze for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Freeze for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Freeze for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Freeze for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Freeze for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Freeze for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Freeze for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Freeze for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Freeze for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Freeze for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Freeze for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Freeze for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Freeze for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Freeze for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Freeze for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Freeze for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Freeze for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Freeze for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Freeze for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Freeze for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Freeze for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Freeze for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Freeze for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Freeze for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Freeze for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Freeze for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Freeze for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Freeze for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Freeze for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Freeze for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Freeze for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Freeze for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Freeze for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Freeze for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Freeze for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Freeze for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Freeze for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Freeze for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Freeze for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Freeze for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Freeze for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Freeze for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Freeze for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Freeze for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Freeze for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Freeze for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Freeze for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Freeze for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Freeze for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Freeze for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Freeze for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Freeze for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Freeze for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Freeze for CheckLoginMiddleware<S> where
    S: Freeze
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Freeze for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Freeze for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Freeze for SudoPage<'a, K, V>","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Freeze for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Freeze for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Freeze for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Freeze for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Freeze for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Freeze for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Freeze for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Freeze for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Freeze for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Freeze for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Freeze for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Freeze for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> Freeze for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl Freeze for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> Freeze for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Freeze for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl Freeze for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Freeze for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Freeze for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Freeze for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl Freeze for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> Freeze for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Freeze for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Freeze for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Freeze for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Freeze for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Freeze for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Freeze for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Freeze for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Freeze for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Freeze for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Freeze for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Freeze for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Freeze for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Freeze for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Freeze for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Freeze for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Freeze for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Freeze for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Freeze for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Freeze for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Freeze for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Freeze for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Freeze for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Freeze for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Freeze for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Freeze for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Freeze for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Freeze for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Freeze for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Freeze for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Freeze for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Freeze for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Freeze for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Freeze for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Freeze for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Freeze for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Freeze for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Freeze for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Freeze for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Freeze for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Freeze for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Freeze for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Freeze for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Freeze for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Freeze for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Freeze for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; -implementors["tests_migrate"] = [{"text":"impl Freeze for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Freeze for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Freeze for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Freeze for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Freeze for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Freeze for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Freeze for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; +implementors["mcaptcha"] = [{"text":"impl Freeze for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Freeze for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Freeze for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Freeze for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Freeze for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Freeze for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Freeze for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Freeze for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Freeze for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Freeze for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Freeze for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Freeze for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Freeze for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Freeze for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Freeze for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Freeze for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Freeze for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Freeze for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Freeze for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Freeze for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Freeze for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Freeze for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Freeze for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Freeze for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Freeze for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Freeze for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Freeze for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Freeze for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Freeze for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Freeze for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Freeze for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Freeze for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Freeze for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Freeze for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Freeze for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Freeze for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Freeze for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Freeze for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Freeze for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Freeze for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Freeze for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Freeze for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Freeze for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Freeze for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Freeze for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Freeze for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Freeze for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Freeze for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Freeze for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Freeze for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Freeze for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Freeze for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Freeze for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Freeze for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Freeze for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Freeze for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Freeze for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Freeze for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Freeze for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Freeze for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Freeze for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Freeze for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Freeze for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Freeze for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Freeze for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Freeze for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Freeze for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Freeze for RedirectQuery","synthetic":true,"types":["mcaptcha::api::v1::RedirectQuery"]},{"text":"impl Freeze for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Freeze for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Freeze for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Freeze for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Freeze for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Freeze for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Freeze for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Freeze for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Freeze for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Freeze for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Freeze for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Freeze for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Freeze for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Freeze for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Freeze for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Freeze for SudoPage<'a, K, V>","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Freeze for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Freeze for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Freeze for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Freeze for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Freeze for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Freeze for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Freeze for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Freeze for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Freeze for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Freeze for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Freeze for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Freeze for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> Freeze for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl Freeze for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> Freeze for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Freeze for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl Freeze for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Freeze for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Freeze for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Freeze for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl Freeze for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> Freeze for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Freeze for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Freeze for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Freeze for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Freeze for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Freeze for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Freeze for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Freeze for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Freeze for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Freeze for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Freeze for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Freeze for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Freeze for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Freeze for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Freeze for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Freeze for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Freeze for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Freeze for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Freeze for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Freeze for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Freeze for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Freeze for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Freeze for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Freeze for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Freeze for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Freeze for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Freeze for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Freeze for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Freeze for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Freeze for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Freeze for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Freeze for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Freeze for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Freeze for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Freeze for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Freeze for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Freeze for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Freeze for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Freeze for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Freeze for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Freeze for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Freeze for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Freeze for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Freeze for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Freeze for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Freeze for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["tests_migrate"] = [{"text":"impl Freeze for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Freeze for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Freeze for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Freeze for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Freeze for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Freeze for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Freeze for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js index 4e50f29d..28152a6c 100644 --- a/implementors/core/marker/trait.Send.js +++ b/implementors/core/marker/trait.Send.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Send for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Send for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Send for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Send for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Send for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Send for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Send for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Send for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Send for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Send for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Send for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Send for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Send for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Send for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Send for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Send for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Send for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Send for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Send for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Send for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Send for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Send for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Send for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Send for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Send for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Send for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Send for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Send for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Send for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Send for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Send for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Send for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Send for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Send for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Send for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Send for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Send for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Send for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Send for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Send for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Send for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Send for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Send for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Send for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Send for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Send for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Send for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Send for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Send for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Send for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Send for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Send for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Send for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Send for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Send for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Send for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Send for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Send for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Send for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Send for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Send for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Send for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Send for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Send for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Send for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Send for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Send for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Send for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Send for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Send for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Send for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Send for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Send for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Send for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Send for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Send for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Send for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Send for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Send for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Send for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Send for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Send for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Send for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Send for CheckLoginMiddleware<S> where
    S: Send
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Send for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Send for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Send for SudoPage<'a, K, V> where
    K: Send,
    V: Send
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Send for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Send for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Send for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Send for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Send for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Send for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Send for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Send for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Send for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Send for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Send for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Send for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Send for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Send for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> Send for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl Send for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> Send for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Send for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl Send for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Send for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Send for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Send for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl Send for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> Send for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Send for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Send for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Send for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Send for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Send for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Send for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Send for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Send for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Send for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Send for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Send for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Send for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Send for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Send for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Send for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Send for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Send for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Send for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Send for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Send for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Send for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Send for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Send for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Send for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Send for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Send for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Send for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Send for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Send for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Send for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Send for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Send for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Send for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Send for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Send for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Send for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Send for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Send for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Send for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Send for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Send for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Send for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Send for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Send for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Send for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Send for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Send for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; -implementors["tests_migrate"] = [{"text":"impl Send for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Send for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Send for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Send for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Send for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Send for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Send for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Send for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Send for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; +implementors["mcaptcha"] = [{"text":"impl Send for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Send for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Send for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Send for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Send for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Send for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Send for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Send for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Send for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Send for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Send for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Send for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Send for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Send for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Send for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Send for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Send for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Send for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Send for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Send for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Send for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Send for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Send for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Send for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Send for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Send for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Send for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Send for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Send for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Send for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Send for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Send for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Send for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Send for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Send for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Send for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Send for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Send for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Send for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Send for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Send for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Send for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Send for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Send for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Send for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Send for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Send for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Send for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Send for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Send for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Send for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Send for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Send for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Send for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Send for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Send for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Send for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Send for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Send for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Send for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Send for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Send for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Send for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Send for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Send for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Send for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Send for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Send for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Send for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Send for RedirectQuery","synthetic":true,"types":["mcaptcha::api::v1::RedirectQuery"]},{"text":"impl Send for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Send for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Send for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Send for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Send for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Send for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Send for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Send for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Send for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Send for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Send for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Send for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Send for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Send for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Send for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Send for SudoPage<'a, K, V> where
    K: Send,
    V: Send
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Send for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Send for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Send for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Send for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Send for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Send for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Send for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Send for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Send for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Send for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Send for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Send for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Send for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Send for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> Send for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl Send for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> Send for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Send for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl Send for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Send for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Send for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Send for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl Send for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> Send for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Send for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Send for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Send for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Send for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Send for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Send for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Send for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Send for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Send for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Send for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Send for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Send for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Send for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Send for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Send for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Send for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Send for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Send for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Send for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Send for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Send for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Send for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Send for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Send for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Send for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Send for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Send for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Send for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Send for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Send for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Send for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Send for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Send for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Send for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Send for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Send for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Send for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Send for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Send for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Send for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Send for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Send for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Send for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Send for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Send for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Send for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Send for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["tests_migrate"] = [{"text":"impl Send for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Send for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Send for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Send for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Send for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Send for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Send for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Send for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Send for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.StructuralPartialEq.js b/implementors/core/marker/trait.StructuralPartialEq.js index bd985c02..40536f50 100644 --- a/implementors/core/marker/trait.StructuralPartialEq.js +++ b/implementors/core/marker/trait.StructuralPartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl StructuralPartialEq for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl StructuralPartialEq for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]}]; +implementors["mcaptcha"] = [{"text":"impl StructuralPartialEq for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl StructuralPartialEq for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js index 01836854..11238947 100644 --- a/implementors/core/marker/trait.Sync.js +++ b/implementors/core/marker/trait.Sync.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Sync for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Sync for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Sync for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Sync for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Sync for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Sync for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Sync for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Sync for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Sync for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Sync for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Sync for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Sync for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Sync for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Sync for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Sync for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Sync for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Sync for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Sync for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Sync for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Sync for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Sync for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Sync for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Sync for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Sync for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Sync for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Sync for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Sync for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Sync for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Sync for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Sync for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Sync for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Sync for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Sync for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Sync for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Sync for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Sync for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Sync for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Sync for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Sync for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Sync for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Sync for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Sync for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Sync for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Sync for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Sync for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Sync for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Sync for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Sync for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Sync for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Sync for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Sync for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Sync for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Sync for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Sync for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Sync for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Sync for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Sync for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Sync for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Sync for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Sync for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Sync for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Sync for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Sync for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Sync for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Sync for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Sync for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Sync for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Sync for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Sync for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Sync for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Sync for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Sync for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Sync for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Sync for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Sync for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Sync for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Sync for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Sync for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Sync for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Sync for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Sync for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Sync for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Sync for CheckLoginMiddleware<S> where
    S: Sync
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Sync for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Sync for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Sync for SudoPage<'a, K, V> where
    K: Sync,
    V: Sync
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Sync for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Sync for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Sync for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Sync for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Sync for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Sync for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Sync for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Sync for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Sync for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Sync for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Sync for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Sync for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Sync for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Sync for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> Sync for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl Sync for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> Sync for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Sync for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl Sync for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Sync for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Sync for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Sync for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl Sync for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> Sync for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Sync for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Sync for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Sync for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Sync for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Sync for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Sync for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Sync for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Sync for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Sync for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Sync for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Sync for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Sync for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Sync for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Sync for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Sync for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Sync for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Sync for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Sync for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Sync for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Sync for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Sync for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Sync for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Sync for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Sync for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Sync for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Sync for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Sync for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Sync for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Sync for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Sync for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Sync for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Sync for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Sync for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Sync for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Sync for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Sync for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Sync for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Sync for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Sync for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Sync for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Sync for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Sync for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Sync for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Sync for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Sync for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Sync for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; -implementors["tests_migrate"] = [{"text":"impl Sync for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Sync for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Sync for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Sync for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Sync for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Sync for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Sync for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Sync for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; +implementors["mcaptcha"] = [{"text":"impl Sync for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Sync for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Sync for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Sync for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Sync for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Sync for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Sync for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Sync for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Sync for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Sync for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Sync for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Sync for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Sync for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Sync for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Sync for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Sync for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Sync for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Sync for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Sync for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Sync for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Sync for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Sync for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Sync for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Sync for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Sync for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Sync for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Sync for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Sync for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Sync for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Sync for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Sync for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Sync for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Sync for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Sync for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Sync for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Sync for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Sync for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Sync for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Sync for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Sync for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Sync for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Sync for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Sync for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Sync for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Sync for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Sync for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Sync for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Sync for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Sync for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Sync for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Sync for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Sync for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Sync for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Sync for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Sync for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Sync for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Sync for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Sync for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Sync for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Sync for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Sync for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Sync for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Sync for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Sync for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Sync for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Sync for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Sync for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Sync for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Sync for RedirectQuery","synthetic":true,"types":["mcaptcha::api::v1::RedirectQuery"]},{"text":"impl Sync for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Sync for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Sync for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Sync for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Sync for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Sync for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Sync for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Sync for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Sync for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Sync for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Sync for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Sync for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Sync for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Sync for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Sync for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Sync for SudoPage<'a, K, V> where
    K: Sync,
    V: Sync
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Sync for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Sync for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Sync for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Sync for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Sync for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Sync for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Sync for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Sync for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Sync for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Sync for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Sync for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Sync for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Sync for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Sync for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> Sync for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl Sync for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> Sync for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Sync for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl Sync for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Sync for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Sync for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Sync for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl Sync for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> Sync for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Sync for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Sync for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Sync for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Sync for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Sync for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Sync for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Sync for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Sync for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Sync for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Sync for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Sync for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Sync for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Sync for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Sync for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Sync for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Sync for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Sync for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Sync for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Sync for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Sync for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Sync for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Sync for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Sync for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Sync for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Sync for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Sync for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Sync for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Sync for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Sync for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Sync for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Sync for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Sync for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Sync for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Sync for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Sync for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Sync for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Sync for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Sync for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Sync for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Sync for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Sync for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Sync for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Sync for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Sync for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Sync for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Sync for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["tests_migrate"] = [{"text":"impl Sync for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Sync for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Sync for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Sync for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Sync for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Sync for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Sync for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Sync for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js index 44c08b4a..4cd586e3 100644 --- a/implementors/core/marker/trait.Unpin.js +++ b/implementors/core/marker/trait.Unpin.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Unpin for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Unpin for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Unpin for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Unpin for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Unpin for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Unpin for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Unpin for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Unpin for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Unpin for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Unpin for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Unpin for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Unpin for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Unpin for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Unpin for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Unpin for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Unpin for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Unpin for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Unpin for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Unpin for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Unpin for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Unpin for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Unpin for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Unpin for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Unpin for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Unpin for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Unpin for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Unpin for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Unpin for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Unpin for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Unpin for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Unpin for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Unpin for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Unpin for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Unpin for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Unpin for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Unpin for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Unpin for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Unpin for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Unpin for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Unpin for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Unpin for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Unpin for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Unpin for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Unpin for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Unpin for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Unpin for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Unpin for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Unpin for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Unpin for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Unpin for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Unpin for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Unpin for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Unpin for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Unpin for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Unpin for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Unpin for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Unpin for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Unpin for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Unpin for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Unpin for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Unpin for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Unpin for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Unpin for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Unpin for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Unpin for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Unpin for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Unpin for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Unpin for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Unpin for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Unpin for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Unpin for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Unpin for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Unpin for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Unpin for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Unpin for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Unpin for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Unpin for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Unpin for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Unpin for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Unpin for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Unpin for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Unpin for CheckLoginMiddleware<S> where
    S: Unpin
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Unpin for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Unpin for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Unpin for SudoPage<'a, K, V> where
    K: Unpin,
    V: Unpin
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Unpin for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Unpin for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Unpin for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Unpin for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Unpin for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Unpin for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Unpin for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Unpin for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Unpin for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Unpin for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Unpin for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Unpin for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> Unpin for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl Unpin for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> Unpin for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Unpin for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl Unpin for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Unpin for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Unpin for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Unpin for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl Unpin for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> Unpin for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Unpin for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Unpin for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Unpin for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Unpin for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Unpin for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Unpin for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Unpin for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Unpin for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Unpin for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Unpin for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Unpin for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Unpin for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Unpin for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Unpin for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Unpin for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Unpin for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Unpin for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Unpin for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Unpin for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Unpin for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Unpin for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Unpin for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Unpin for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Unpin for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Unpin for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Unpin for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Unpin for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Unpin for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Unpin for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Unpin for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Unpin for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Unpin for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Unpin for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Unpin for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Unpin for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Unpin for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Unpin for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Unpin for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Unpin for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Unpin for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Unpin for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Unpin for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Unpin for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Unpin for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Unpin for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; -implementors["tests_migrate"] = [{"text":"impl Unpin for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Unpin for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Unpin for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Unpin for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Unpin for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Unpin for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Unpin for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; +implementors["mcaptcha"] = [{"text":"impl Unpin for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Unpin for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Unpin for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Unpin for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Unpin for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Unpin for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Unpin for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Unpin for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Unpin for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Unpin for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Unpin for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Unpin for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Unpin for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Unpin for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Unpin for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Unpin for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Unpin for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Unpin for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Unpin for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Unpin for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Unpin for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Unpin for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Unpin for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Unpin for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Unpin for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Unpin for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Unpin for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Unpin for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Unpin for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Unpin for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Unpin for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Unpin for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Unpin for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Unpin for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Unpin for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Unpin for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Unpin for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Unpin for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Unpin for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Unpin for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Unpin for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Unpin for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Unpin for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Unpin for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Unpin for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Unpin for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Unpin for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Unpin for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Unpin for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Unpin for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Unpin for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Unpin for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Unpin for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Unpin for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Unpin for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Unpin for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Unpin for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Unpin for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Unpin for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Unpin for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Unpin for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Unpin for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Unpin for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Unpin for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Unpin for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Unpin for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Unpin for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Unpin for RedirectQuery","synthetic":true,"types":["mcaptcha::api::v1::RedirectQuery"]},{"text":"impl Unpin for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Unpin for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Unpin for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Unpin for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Unpin for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Unpin for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Unpin for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Unpin for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Unpin for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Unpin for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Unpin for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Unpin for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Unpin for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Unpin for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Unpin for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Unpin for SudoPage<'a, K, V> where
    K: Unpin,
    V: Unpin
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Unpin for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Unpin for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Unpin for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Unpin for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Unpin for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Unpin for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Unpin for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Unpin for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Unpin for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Unpin for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Unpin for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Unpin for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> Unpin for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl Unpin for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> Unpin for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Unpin for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl Unpin for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Unpin for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Unpin for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Unpin for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl Unpin for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> Unpin for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Unpin for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Unpin for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Unpin for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Unpin for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Unpin for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Unpin for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Unpin for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Unpin for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Unpin for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Unpin for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Unpin for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Unpin for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Unpin for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Unpin for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Unpin for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Unpin for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Unpin for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Unpin for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Unpin for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Unpin for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Unpin for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Unpin for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Unpin for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Unpin for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Unpin for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Unpin for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Unpin for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Unpin for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Unpin for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Unpin for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Unpin for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Unpin for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Unpin for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Unpin for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Unpin for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Unpin for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Unpin for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Unpin for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Unpin for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Unpin for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Unpin for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Unpin for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Unpin for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Unpin for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Unpin for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["tests_migrate"] = [{"text":"impl Unpin for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Unpin for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Unpin for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Unpin for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Unpin for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Unpin for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Unpin for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/deref/trait.Deref.js b/implementors/core/ops/deref/trait.Deref.js index aeffe907..66281580 100644 --- a/implementors/core/ops/deref/trait.Deref.js +++ b/implementors/core/ops/deref/trait.Deref.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Deref for INDEX","synthetic":false,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Deref for INDEX","synthetic":false,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Deref for INTERNAL_SERVER_ERROR_BODY","synthetic":false,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Deref for UNKNOWN_ERROR_BODY","synthetic":false,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Deref for ADVANCE_INDEX","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Deref for EASY_INDEX","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl Deref for INDEX","synthetic":false,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Deref for KEY","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Deref for GITHUB","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Deref for HOME","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Deref for SETTINGS_ICON","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Deref for CREDIT_CARD","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Deref for HELP_CIRCLE","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Deref for MESSAGE","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Deref for DOCS_ICON","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Deref for MCAPTCHA_TRANS_ICON","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Deref for BAR_CHART","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Deref for INDEX_PAGE","synthetic":false,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Deref for SETTINGS","synthetic":false,"types":["mcaptcha::SETTINGS"]},{"text":"impl Deref for FILES","synthetic":false,"types":["mcaptcha::FILES"]},{"text":"impl Deref for JS","synthetic":false,"types":["mcaptcha::JS"]},{"text":"impl Deref for CSS","synthetic":false,"types":["mcaptcha::CSS"]},{"text":"impl Deref for MOBILE_CSS","synthetic":false,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Deref for VERIFICATIN_WIDGET_JS","synthetic":false,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Deref for VERIFICATIN_WIDGET_CSS","synthetic":false,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Deref for SOURCE_FILES_OF_INSTANCE","synthetic":false,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; -implementors["tests_migrate"] = [{"text":"impl Deref for SETTINGS","synthetic":false,"types":["tests_migrate::SETTINGS"]}]; +implementors["mcaptcha"] = [{"text":"impl Deref for INDEX","synthetic":false,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Deref for INDEX","synthetic":false,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Deref for INTERNAL_SERVER_ERROR_BODY","synthetic":false,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Deref for UNKNOWN_ERROR_BODY","synthetic":false,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Deref for ADVANCE_INDEX","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl Deref for EASY_INDEX","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl Deref for INDEX","synthetic":false,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Deref for KEY","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Deref for GITHUB","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Deref for HOME","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Deref for SETTINGS_ICON","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Deref for CREDIT_CARD","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Deref for HELP_CIRCLE","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Deref for MESSAGE","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Deref for DOCS_ICON","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Deref for MCAPTCHA_TRANS_ICON","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Deref for BAR_CHART","synthetic":false,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Deref for INDEX_PAGE","synthetic":false,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Deref for SETTINGS","synthetic":false,"types":["mcaptcha::SETTINGS"]},{"text":"impl Deref for FILES","synthetic":false,"types":["mcaptcha::FILES"]},{"text":"impl Deref for JS","synthetic":false,"types":["mcaptcha::JS"]},{"text":"impl Deref for CSS","synthetic":false,"types":["mcaptcha::CSS"]},{"text":"impl Deref for MOBILE_CSS","synthetic":false,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Deref for VERIFICATIN_WIDGET_JS","synthetic":false,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Deref for VERIFICATIN_WIDGET_CSS","synthetic":false,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Deref for SOURCE_FILES_OF_INSTANCE","synthetic":false,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["tests_migrate"] = [{"text":"impl Deref for SETTINGS","synthetic":false,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js index 6205f9fe..b9c9d3e9 100644 --- a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl RefUnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl RefUnwindSafe for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl RefUnwindSafe for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl RefUnwindSafe for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl RefUnwindSafe for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl RefUnwindSafe for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl RefUnwindSafe for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl RefUnwindSafe for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl RefUnwindSafe for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl RefUnwindSafe for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl RefUnwindSafe for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl RefUnwindSafe for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl RefUnwindSafe for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl RefUnwindSafe for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl RefUnwindSafe for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl RefUnwindSafe for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl RefUnwindSafe for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl RefUnwindSafe for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl RefUnwindSafe for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl RefUnwindSafe for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl RefUnwindSafe for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl RefUnwindSafe for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl RefUnwindSafe for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl RefUnwindSafe for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl RefUnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl RefUnwindSafe for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl RefUnwindSafe for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl RefUnwindSafe for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl RefUnwindSafe for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl RefUnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl RefUnwindSafe for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl RefUnwindSafe for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl RefUnwindSafe for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl RefUnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl RefUnwindSafe for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl RefUnwindSafe for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl RefUnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl RefUnwindSafe for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl RefUnwindSafe for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl RefUnwindSafe for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl RefUnwindSafe for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl RefUnwindSafe for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl RefUnwindSafe for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl RefUnwindSafe for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl RefUnwindSafe for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl RefUnwindSafe for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl RefUnwindSafe for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl RefUnwindSafe for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl RefUnwindSafe for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl RefUnwindSafe for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl RefUnwindSafe for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl RefUnwindSafe for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl RefUnwindSafe for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl RefUnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl RefUnwindSafe for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl RefUnwindSafe for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl RefUnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl RefUnwindSafe for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl RefUnwindSafe for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl RefUnwindSafe for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl RefUnwindSafe for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl RefUnwindSafe for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl RefUnwindSafe for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl RefUnwindSafe for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl RefUnwindSafe for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl RefUnwindSafe for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl RefUnwindSafe for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl !RefUnwindSafe for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl !RefUnwindSafe for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl RefUnwindSafe for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl !RefUnwindSafe for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl RefUnwindSafe for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl RefUnwindSafe for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl RefUnwindSafe for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl RefUnwindSafe for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl RefUnwindSafe for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl !RefUnwindSafe for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl !RefUnwindSafe for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl RefUnwindSafe for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl !RefUnwindSafe for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl RefUnwindSafe for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> RefUnwindSafe for CheckLoginMiddleware<S> where
    S: RefUnwindSafe
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl RefUnwindSafe for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl RefUnwindSafe for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> RefUnwindSafe for SudoPage<'a, K, V> where
    K: RefUnwindSafe,
    V: RefUnwindSafe
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl RefUnwindSafe for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> RefUnwindSafe for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl RefUnwindSafe for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl RefUnwindSafe for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl RefUnwindSafe for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl RefUnwindSafe for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl RefUnwindSafe for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl RefUnwindSafe for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl RefUnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl RefUnwindSafe for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl RefUnwindSafe for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl RefUnwindSafe for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> RefUnwindSafe for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl RefUnwindSafe for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> RefUnwindSafe for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl RefUnwindSafe for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl RefUnwindSafe for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl RefUnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl RefUnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl RefUnwindSafe for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl RefUnwindSafe for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> RefUnwindSafe for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl RefUnwindSafe for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl RefUnwindSafe for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl RefUnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl RefUnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl RefUnwindSafe for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl RefUnwindSafe for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl RefUnwindSafe for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl RefUnwindSafe for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl RefUnwindSafe for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl RefUnwindSafe for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl RefUnwindSafe for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl RefUnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl RefUnwindSafe for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl RefUnwindSafe for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl RefUnwindSafe for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl RefUnwindSafe for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl RefUnwindSafe for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl RefUnwindSafe for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl RefUnwindSafe for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl RefUnwindSafe for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl RefUnwindSafe for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl RefUnwindSafe for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl RefUnwindSafe for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl RefUnwindSafe for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl RefUnwindSafe for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl RefUnwindSafe for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl RefUnwindSafe for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl RefUnwindSafe for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl RefUnwindSafe for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl RefUnwindSafe for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl RefUnwindSafe for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl RefUnwindSafe for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl RefUnwindSafe for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl RefUnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl RefUnwindSafe for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl RefUnwindSafe for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl RefUnwindSafe for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl RefUnwindSafe for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl RefUnwindSafe for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl RefUnwindSafe for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl RefUnwindSafe for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl RefUnwindSafe for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl RefUnwindSafe for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl RefUnwindSafe for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; -implementors["tests_migrate"] = [{"text":"impl RefUnwindSafe for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl RefUnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl RefUnwindSafe for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl RefUnwindSafe for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl RefUnwindSafe for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl RefUnwindSafe for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl RefUnwindSafe for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; +implementors["mcaptcha"] = [{"text":"impl RefUnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl RefUnwindSafe for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl RefUnwindSafe for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl RefUnwindSafe for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl RefUnwindSafe for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl RefUnwindSafe for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl RefUnwindSafe for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl RefUnwindSafe for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl RefUnwindSafe for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl RefUnwindSafe for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl RefUnwindSafe for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl RefUnwindSafe for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl RefUnwindSafe for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl RefUnwindSafe for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl RefUnwindSafe for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl RefUnwindSafe for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl RefUnwindSafe for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl RefUnwindSafe for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl RefUnwindSafe for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl RefUnwindSafe for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl RefUnwindSafe for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl RefUnwindSafe for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl RefUnwindSafe for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl RefUnwindSafe for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl RefUnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl RefUnwindSafe for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl RefUnwindSafe for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl RefUnwindSafe for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl RefUnwindSafe for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl RefUnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl RefUnwindSafe for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl RefUnwindSafe for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl RefUnwindSafe for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl RefUnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl RefUnwindSafe for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl RefUnwindSafe for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl RefUnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl RefUnwindSafe for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl RefUnwindSafe for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl RefUnwindSafe for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl RefUnwindSafe for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl RefUnwindSafe for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl RefUnwindSafe for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl RefUnwindSafe for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl RefUnwindSafe for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl RefUnwindSafe for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl RefUnwindSafe for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl RefUnwindSafe for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl RefUnwindSafe for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl RefUnwindSafe for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl RefUnwindSafe for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl RefUnwindSafe for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl RefUnwindSafe for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl RefUnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl RefUnwindSafe for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl RefUnwindSafe for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl RefUnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl RefUnwindSafe for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl RefUnwindSafe for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl RefUnwindSafe for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl RefUnwindSafe for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl RefUnwindSafe for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl RefUnwindSafe for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl RefUnwindSafe for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl RefUnwindSafe for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl RefUnwindSafe for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl RefUnwindSafe for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl RefUnwindSafe for RedirectQuery","synthetic":true,"types":["mcaptcha::api::v1::RedirectQuery"]},{"text":"impl !RefUnwindSafe for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl !RefUnwindSafe for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl RefUnwindSafe for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl RefUnwindSafe for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl RefUnwindSafe for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl RefUnwindSafe for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl RefUnwindSafe for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl RefUnwindSafe for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl RefUnwindSafe for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl !RefUnwindSafe for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl !RefUnwindSafe for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl RefUnwindSafe for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl !RefUnwindSafe for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl RefUnwindSafe for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl RefUnwindSafe for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> RefUnwindSafe for SudoPage<'a, K, V> where
    K: RefUnwindSafe,
    V: RefUnwindSafe
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl RefUnwindSafe for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> RefUnwindSafe for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl RefUnwindSafe for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl RefUnwindSafe for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl RefUnwindSafe for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl RefUnwindSafe for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl RefUnwindSafe for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl RefUnwindSafe for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl RefUnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl RefUnwindSafe for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl RefUnwindSafe for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl RefUnwindSafe for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> RefUnwindSafe for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl RefUnwindSafe for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> RefUnwindSafe for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl RefUnwindSafe for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl RefUnwindSafe for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl RefUnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl RefUnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl RefUnwindSafe for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl RefUnwindSafe for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> RefUnwindSafe for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl RefUnwindSafe for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl RefUnwindSafe for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl RefUnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl RefUnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl RefUnwindSafe for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl RefUnwindSafe for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl RefUnwindSafe for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl RefUnwindSafe for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl RefUnwindSafe for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl RefUnwindSafe for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl RefUnwindSafe for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl RefUnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl RefUnwindSafe for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl RefUnwindSafe for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl RefUnwindSafe for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl RefUnwindSafe for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl RefUnwindSafe for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl RefUnwindSafe for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl RefUnwindSafe for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl RefUnwindSafe for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl RefUnwindSafe for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl RefUnwindSafe for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl RefUnwindSafe for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl RefUnwindSafe for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl RefUnwindSafe for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl RefUnwindSafe for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl RefUnwindSafe for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl RefUnwindSafe for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl RefUnwindSafe for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl RefUnwindSafe for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl RefUnwindSafe for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl RefUnwindSafe for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl RefUnwindSafe for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl RefUnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl RefUnwindSafe for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl RefUnwindSafe for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl RefUnwindSafe for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl RefUnwindSafe for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl RefUnwindSafe for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl RefUnwindSafe for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl RefUnwindSafe for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl RefUnwindSafe for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl RefUnwindSafe for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl RefUnwindSafe for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["tests_migrate"] = [{"text":"impl RefUnwindSafe for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl RefUnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl RefUnwindSafe for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl RefUnwindSafe for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl RefUnwindSafe for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl RefUnwindSafe for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl RefUnwindSafe for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js index 919a9540..c234c3b3 100644 --- a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl UnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl UnwindSafe for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl UnwindSafe for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl UnwindSafe for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl UnwindSafe for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl UnwindSafe for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl UnwindSafe for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl UnwindSafe for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl UnwindSafe for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl UnwindSafe for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl UnwindSafe for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl UnwindSafe for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl UnwindSafe for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl UnwindSafe for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl UnwindSafe for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl UnwindSafe for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl UnwindSafe for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl UnwindSafe for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl UnwindSafe for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl UnwindSafe for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl UnwindSafe for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl UnwindSafe for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl UnwindSafe for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl UnwindSafe for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl UnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl UnwindSafe for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl UnwindSafe for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl UnwindSafe for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl UnwindSafe for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl UnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl UnwindSafe for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl UnwindSafe for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl UnwindSafe for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl UnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl UnwindSafe for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl UnwindSafe for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl UnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl UnwindSafe for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl UnwindSafe for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl UnwindSafe for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl UnwindSafe for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl UnwindSafe for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl UnwindSafe for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl UnwindSafe for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl UnwindSafe for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl UnwindSafe for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl UnwindSafe for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl UnwindSafe for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl UnwindSafe for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl UnwindSafe for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl UnwindSafe for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl UnwindSafe for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl UnwindSafe for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl UnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl UnwindSafe for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl UnwindSafe for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl UnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl UnwindSafe for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl UnwindSafe for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl UnwindSafe for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl UnwindSafe for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl UnwindSafe for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl UnwindSafe for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl UnwindSafe for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl UnwindSafe for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl UnwindSafe for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl UnwindSafe for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl !UnwindSafe for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl !UnwindSafe for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl UnwindSafe for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl !UnwindSafe for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl UnwindSafe for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl UnwindSafe for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl UnwindSafe for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl UnwindSafe for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl UnwindSafe for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl !UnwindSafe for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl !UnwindSafe for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl UnwindSafe for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl !UnwindSafe for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl UnwindSafe for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> UnwindSafe for CheckLoginMiddleware<S> where
    S: UnwindSafe
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl UnwindSafe for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl UnwindSafe for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> UnwindSafe for SudoPage<'a, K, V> where
    K: UnwindSafe,
    V: UnwindSafe
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl UnwindSafe for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> UnwindSafe for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl UnwindSafe for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl UnwindSafe for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl UnwindSafe for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl UnwindSafe for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl UnwindSafe for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl UnwindSafe for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl UnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl UnwindSafe for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl UnwindSafe for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl UnwindSafe for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> UnwindSafe for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl UnwindSafe for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> UnwindSafe for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl UnwindSafe for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl UnwindSafe for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl UnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl UnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl UnwindSafe for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl UnwindSafe for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> UnwindSafe for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl UnwindSafe for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl UnwindSafe for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl UnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl UnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl UnwindSafe for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl UnwindSafe for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl UnwindSafe for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl UnwindSafe for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl UnwindSafe for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl UnwindSafe for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl UnwindSafe for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl UnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl UnwindSafe for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl UnwindSafe for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl UnwindSafe for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl UnwindSafe for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl UnwindSafe for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl UnwindSafe for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl UnwindSafe for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl UnwindSafe for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl UnwindSafe for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl UnwindSafe for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl UnwindSafe for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl UnwindSafe for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl UnwindSafe for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl UnwindSafe for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl UnwindSafe for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl UnwindSafe for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl UnwindSafe for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl UnwindSafe for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl UnwindSafe for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl UnwindSafe for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl UnwindSafe for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl UnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl UnwindSafe for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl UnwindSafe for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl UnwindSafe for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl UnwindSafe for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl UnwindSafe for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl UnwindSafe for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl UnwindSafe for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl UnwindSafe for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl UnwindSafe for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl UnwindSafe for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl UnwindSafe for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; -implementors["tests_migrate"] = [{"text":"impl UnwindSafe for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl UnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl UnwindSafe for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl UnwindSafe for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl UnwindSafe for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl UnwindSafe for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl UnwindSafe for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; +implementors["mcaptcha"] = [{"text":"impl UnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl UnwindSafe for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl UnwindSafe for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl UnwindSafe for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl UnwindSafe for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl UnwindSafe for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl UnwindSafe for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl UnwindSafe for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl UnwindSafe for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl UnwindSafe for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl UnwindSafe for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl UnwindSafe for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl UnwindSafe for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl UnwindSafe for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl UnwindSafe for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl UnwindSafe for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl UnwindSafe for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl UnwindSafe for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl UnwindSafe for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl UnwindSafe for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl UnwindSafe for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl UnwindSafe for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl UnwindSafe for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl UnwindSafe for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl UnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl UnwindSafe for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl UnwindSafe for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl UnwindSafe for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl UnwindSafe for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl UnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl UnwindSafe for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl UnwindSafe for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl UnwindSafe for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl UnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl UnwindSafe for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl UnwindSafe for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl UnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl UnwindSafe for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl UnwindSafe for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl UnwindSafe for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl UnwindSafe for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl UnwindSafe for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl UnwindSafe for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl UnwindSafe for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl UnwindSafe for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl UnwindSafe for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl UnwindSafe for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl UnwindSafe for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl UnwindSafe for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl UnwindSafe for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl UnwindSafe for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl UnwindSafe for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl UnwindSafe for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl UnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl UnwindSafe for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl UnwindSafe for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl UnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl UnwindSafe for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl UnwindSafe for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl UnwindSafe for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl UnwindSafe for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl UnwindSafe for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl UnwindSafe for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl UnwindSafe for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl UnwindSafe for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl UnwindSafe for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl UnwindSafe for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl UnwindSafe for RedirectQuery","synthetic":true,"types":["mcaptcha::api::v1::RedirectQuery"]},{"text":"impl !UnwindSafe for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl !UnwindSafe for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl UnwindSafe for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl UnwindSafe for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl UnwindSafe for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl UnwindSafe for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl UnwindSafe for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl UnwindSafe for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl UnwindSafe for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl !UnwindSafe for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl !UnwindSafe for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl UnwindSafe for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl !UnwindSafe for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl UnwindSafe for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl UnwindSafe for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> UnwindSafe for SudoPage<'a, K, V> where
    K: UnwindSafe,
    V: UnwindSafe
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl UnwindSafe for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> UnwindSafe for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl UnwindSafe for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl UnwindSafe for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl UnwindSafe for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl UnwindSafe for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl UnwindSafe for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl UnwindSafe for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl UnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl UnwindSafe for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl UnwindSafe for ADVANCE_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX"]},{"text":"impl UnwindSafe for EASY_INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EASY_INDEX"]},{"text":"impl<'a> UnwindSafe for AdvanceIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl UnwindSafe for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::advance"]},{"text":"impl<'a> UnwindSafe for EasyIndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl UnwindSafe for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::easy"]},{"text":"impl UnwindSafe for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl UnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl UnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl UnwindSafe for AdvanceEditPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl UnwindSafe for advance","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::advance"]},{"text":"impl<'a> UnwindSafe for EasyEditPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl UnwindSafe for easy","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::easy"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl UnwindSafe for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl UnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl UnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl UnwindSafe for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl UnwindSafe for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl UnwindSafe for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl UnwindSafe for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl UnwindSafe for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl UnwindSafe for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl UnwindSafe for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl UnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl UnwindSafe for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl UnwindSafe for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl UnwindSafe for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl UnwindSafe for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl UnwindSafe for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl UnwindSafe for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl UnwindSafe for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl UnwindSafe for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl UnwindSafe for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl UnwindSafe for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl UnwindSafe for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl UnwindSafe for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl UnwindSafe for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl UnwindSafe for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl UnwindSafe for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl UnwindSafe for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl UnwindSafe for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl UnwindSafe for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl UnwindSafe for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl UnwindSafe for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl UnwindSafe for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl UnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl UnwindSafe for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl UnwindSafe for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl UnwindSafe for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl UnwindSafe for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl UnwindSafe for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl UnwindSafe for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl UnwindSafe for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl UnwindSafe for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl UnwindSafe for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl UnwindSafe for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl UnwindSafe for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["tests_migrate"] = [{"text":"impl UnwindSafe for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl UnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl UnwindSafe for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl UnwindSafe for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl UnwindSafe for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl UnwindSafe for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl UnwindSafe for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/sailfish/private/trait.Sealed.js b/implementors/sailfish/private/trait.Sealed.js index 2c692b02..028357c8 100644 --- a/implementors/sailfish/private/trait.Sealed.js +++ b/implementors/sailfish/private/trait.Sealed.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl<'a> Sealed for IndexPage<'a>","synthetic":false,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a, K, V> Sealed for SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
","synthetic":false,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl<'a> Sealed for ErrorPage<'a>","synthetic":false,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl<'a> Sealed for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl<'a> Sealed for AdvanceIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl<'a> Sealed for EasyIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Sealed for AdvanceEditPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl<'a> Sealed for EasyEditPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::widget::IndexPage"]}]; +implementors["mcaptcha"] = [{"text":"impl<'a> Sealed for IndexPage<'a>","synthetic":false,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a, K, V> Sealed for SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
","synthetic":false,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl<'a> Sealed for ErrorPage<'a>","synthetic":false,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl<'a> Sealed for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl<'a> Sealed for AdvanceIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl<'a> Sealed for EasyIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl Sealed for AdvanceEditPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl<'a> Sealed for EasyEditPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Sealed for IndexPage","synthetic":false,"types":["mcaptcha::widget::IndexPage"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/sailfish/trait.TemplateOnce.js b/implementors/sailfish/trait.TemplateOnce.js index 548a7041..20cc94f4 100644 --- a/implementors/sailfish/trait.TemplateOnce.js +++ b/implementors/sailfish/trait.TemplateOnce.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl<'a> TemplateOnce for IndexPage<'a>","synthetic":false,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a, K, V> TemplateOnce for SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
","synthetic":false,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl<'a> TemplateOnce for ErrorPage<'a>","synthetic":false,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl<'a> TemplateOnce for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl<'a> TemplateOnce for AdvanceIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl<'a> TemplateOnce for EasyIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl TemplateOnce for AdvanceEditPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl<'a> TemplateOnce for EasyEditPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::widget::IndexPage"]}]; +implementors["mcaptcha"] = [{"text":"impl<'a> TemplateOnce for IndexPage<'a>","synthetic":false,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a, K, V> TemplateOnce for SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
","synthetic":false,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl<'a> TemplateOnce for ErrorPage<'a>","synthetic":false,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl<'a> TemplateOnce for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl<'a> TemplateOnce for AdvanceIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage"]},{"text":"impl<'a> TemplateOnce for EasyIndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::EasyIndexPage"]},{"text":"impl TemplateOnce for AdvanceEditPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage"]},{"text":"impl<'a> TemplateOnce for EasyEditPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::EasyEditPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl TemplateOnce for IndexPage","synthetic":false,"types":["mcaptcha::widget::IndexPage"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/serde/de/trait.Deserialize.js b/implementors/serde/de/trait.Deserialize.js index f11dc105..6c714140 100644 --- a/implementors/serde/de/trait.Deserialize.js +++ b/implementors/serde/de/trait.Deserialize.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl<'de> Deserialize<'de> for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl<'de> Deserialize<'de> for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl<'de> Deserialize<'de> for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl<'de> Deserialize<'de> for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl<'de> Deserialize<'de> for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl<'de> Deserialize<'de> for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl<'de> Deserialize<'de> for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl<'de> Deserialize<'de> for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl<'de> Deserialize<'de> for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl<'de> Deserialize<'de> for CreateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl<'de> Deserialize<'de> for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl<'de> Deserialize<'de> for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl<'de> Deserialize<'de> for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl<'de> Deserialize<'de> for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl<'de> Deserialize<'de> for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl<'de> Deserialize<'de> for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl<'de> Deserialize<'de> for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl<'de> Deserialize<'de> for UpdateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Deserialize<'static> for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl<'de> Deserialize<'de> for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl<'de> Deserialize<'de> for AddNotification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl<'de> Deserialize<'de> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl<'de> Deserialize<'de> for MarkReadReq","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl<'de> Deserialize<'de> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl<'de> Deserialize<'de> for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl<'de> Deserialize<'de> for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl<'de> Deserialize<'de> for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl<'de> Deserialize<'de> for ErrorToResponse","synthetic":false,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl<'de> Deserialize<'de> for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl<'de> Deserialize<'de> for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl<'de> Deserialize<'de> for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl<'de> Deserialize<'de> for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl<'de> Deserialize<'de> for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl<'de> Deserialize<'de> for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl<'de> Deserialize<'de> for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl<'de> Deserialize<'de> for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl<'de> Deserialize<'de> for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl<'de> Deserialize<'de> for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; -implementors["tests_migrate"] = [{"text":"impl<'de> Deserialize<'de> for Server","synthetic":false,"types":["tests_migrate::settings::Server"]},{"text":"impl<'de> Deserialize<'de> for Captcha","synthetic":false,"types":["tests_migrate::settings::Captcha"]},{"text":"impl<'de> Deserialize<'de> for DefaultDifficultyStrategy","synthetic":false,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl<'de> Deserialize<'de> for Smtp","synthetic":false,"types":["tests_migrate::settings::Smtp"]},{"text":"impl<'de> Deserialize<'de> for DatabaseBuilder","synthetic":false,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl<'de> Deserialize<'de> for Database","synthetic":false,"types":["tests_migrate::settings::Database"]},{"text":"impl<'de> Deserialize<'de> for Redis","synthetic":false,"types":["tests_migrate::settings::Redis"]},{"text":"impl<'de> Deserialize<'de> for Settings","synthetic":false,"types":["tests_migrate::settings::Settings"]}]; +implementors["mcaptcha"] = [{"text":"impl<'de> Deserialize<'de> for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl<'de> Deserialize<'de> for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl<'de> Deserialize<'de> for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl<'de> Deserialize<'de> for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl<'de> Deserialize<'de> for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl<'de> Deserialize<'de> for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl<'de> Deserialize<'de> for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl<'de> Deserialize<'de> for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl<'de> Deserialize<'de> for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl<'de> Deserialize<'de> for CreateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl<'de> Deserialize<'de> for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl<'de> Deserialize<'de> for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl<'de> Deserialize<'de> for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl<'de> Deserialize<'de> for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl<'de> Deserialize<'de> for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl<'de> Deserialize<'de> for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl<'de> Deserialize<'de> for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl<'de> Deserialize<'de> for UpdateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Deserialize<'static> for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl<'de> Deserialize<'de> for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl<'de> Deserialize<'de> for AddNotification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl<'de> Deserialize<'de> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl<'de> Deserialize<'de> for MarkReadReq","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl<'de> Deserialize<'de> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl<'de> Deserialize<'de> for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl<'de> Deserialize<'de> for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl<'de> Deserialize<'de> for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl<'de> Deserialize<'de> for RedirectQuery","synthetic":false,"types":["mcaptcha::api::v1::RedirectQuery"]},{"text":"impl<'de> Deserialize<'de> for ErrorToResponse","synthetic":false,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl<'de> Deserialize<'de> for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl<'de> Deserialize<'de> for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl<'de> Deserialize<'de> for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl<'de> Deserialize<'de> for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl<'de> Deserialize<'de> for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl<'de> Deserialize<'de> for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl<'de> Deserialize<'de> for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl<'de> Deserialize<'de> for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl<'de> Deserialize<'de> for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl<'de> Deserialize<'de> for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; +implementors["tests_migrate"] = [{"text":"impl<'de> Deserialize<'de> for Server","synthetic":false,"types":["tests_migrate::settings::Server"]},{"text":"impl<'de> Deserialize<'de> for Captcha","synthetic":false,"types":["tests_migrate::settings::Captcha"]},{"text":"impl<'de> Deserialize<'de> for DefaultDifficultyStrategy","synthetic":false,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl<'de> Deserialize<'de> for Smtp","synthetic":false,"types":["tests_migrate::settings::Smtp"]},{"text":"impl<'de> Deserialize<'de> for DatabaseBuilder","synthetic":false,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl<'de> Deserialize<'de> for Database","synthetic":false,"types":["tests_migrate::settings::Database"]},{"text":"impl<'de> Deserialize<'de> for Redis","synthetic":false,"types":["tests_migrate::settings::Redis"]},{"text":"impl<'de> Deserialize<'de> for Settings","synthetic":false,"types":["tests_migrate::settings::Settings"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/serde/ser/trait.Serialize.js b/implementors/serde/ser/trait.Serialize.js index fe98bd45..ae19d2db 100644 --- a/implementors/serde/ser/trait.Serialize.js +++ b/implementors/serde/ser/trait.Serialize.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Serialize for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Serialize for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Serialize for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Serialize for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Serialize for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Serialize for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Serialize for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Serialize for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Serialize for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Serialize for CreateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Serialize for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Serialize for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Serialize for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Serialize for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Serialize for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Serialize for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Serialize for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Serialize for UpdateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Serialize for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Serialize for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Serialize for AddNotification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Serialize for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Serialize for MarkReadReq","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Serialize for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Serialize for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Serialize for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Serialize for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Serialize for ErrorToResponse","synthetic":false,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Serialize for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Serialize for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; +implementors["mcaptcha"] = [{"text":"impl Serialize for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Serialize for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Serialize for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Serialize for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Serialize for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Serialize for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Serialize for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Serialize for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Serialize for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Serialize for CreateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Serialize for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Serialize for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Serialize for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Serialize for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Serialize for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Serialize for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Serialize for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Serialize for UpdateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Serialize for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Serialize for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Serialize for AddNotification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Serialize for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Serialize for MarkReadReq","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Serialize for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Serialize for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Serialize for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Serialize for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Serialize for ErrorToResponse","synthetic":false,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Serialize for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Serialize for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/std/error/trait.Error.js b/implementors/std/error/trait.Error.js index bdadcc49..da1bca29 100644 --- a/implementors/std/error/trait.Error.js +++ b/implementors/std/error/trait.Error.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Error for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Error for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Error for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Error for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Error for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]}]; +implementors["mcaptcha"] = [{"text":"impl Error for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Error for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Error for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Error for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Error for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/light.css b/light.css index 9ad7a698..289f10cf 100644 --- a/light.css +++ b/light.css @@ -1 +1 @@ - body{background-color:white;color:black;}h1,h2,h3,h4{color:black;}h1.fqn{border-bottom-color:#D5D5D5;}h2,h3,h4{border-bottom-color:#DDDDDD;}.in-band{background-color:white;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#F5F5F5;}pre,.rustdoc.source .example-wrap{background-color:#F5F5F5;}.sidebar{background-color:#F1F1F1;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.logo-container.rust-logo>img{}::-webkit-scrollbar-track{background-color:#ecebeb;}::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar::-webkit-scrollbar-track{background-color:#dcdcdc;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar .current{background-color:#fff;}.source .sidebar{background-color:#fff;}.sidebar .location{border-color:#000;background-color:#fff;color:#333;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#F5F5F5;}.line-numbers span{color:#c67e2d;}.line-numbers .line-highlighted{background-color:#f6fdb0 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#ddd;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.search-results a:hover{background-color:#ddd;}.search-results a:focus{color:#000 !important;background-color:#ccc;}.search-results a:focus span{color:#000 !important;}a.result-trait:focus{background-color:#c7b6ff;}a.result-traitalias:focus{background-color:#c7b6ff;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-enum:focus{background-color:#b4d1b9;}a.result-struct:focus{background-color:#e7b1a0;}a.result-union:focus{background-color:#b7bd49;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#c6afb3;}a.result-type:focus{background-color:#ffc891;}a.result-foreigntype:focus{background-color:#f5c4ff;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#8ce488;}a.result-constant:focus,a.result-static:focus{background-color:#c3e0ff;}a.result-primitive:focus{background-color:#9aecff;}a.result-keyword:focus{background-color:#f99650;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#508157;}.content span.struct,.content a.struct,.block a.current.struct{color:#ad448e;}.content span.type,.content a.type,.block a.current.type{color:#ba5d00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#cd00e2;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#068000;}.content span.union,.content a.union,.block a.current.union{color:#767b27;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#546e8a;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2c8093;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#4d76ae;}.content span.trait,.content a.trait,.block a.current.trait{color:#7c5af3;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#6841f1;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#9a6e31;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#de5249;}nav:not(.sidebar){border-bottom-color:#e0e0e0;}nav.main .current{border-top-color:#000;border-bottom-color:#000;}nav.main .separator{border:1px solid #000;}a{color:#000;}body.source .example-wrap pre.rust a{background:#eee;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#3873AD;}a.test-arrow{color:#f5f5f5;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search{color:#555;background-color:white;border-color:#e0e0e0;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input{color:#555;background-color:white;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input:focus{border-color:#66afe9;}.search-input:disabled{background-color:#e6e6e6;}#crate-search+.search-input:focus{box-shadow:0 0 8px #078dd8;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}.since{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:black;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#8959A8;}pre.rust .kw-2,pre.rust .prelude-ty{color:#4271AE;}pre.rust .number,pre.rust .string{color:#718C00;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#C82829;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#B76514;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#c7c7c7;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target,:target>*{background:#FDFFD3;}:target{border-right:3px solid #ffb44c;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.5);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.5);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}.notable-traits-tooltiptext .notable{border-bottom-color:#DDDDDD;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#F1F1F1;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F1F1F1;border-right-color:#000;}#sidebar-filler{background-color:#F1F1F1;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background-color:#fff;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#717171;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(35%);}#theme-choices{border-color:#ccc;background-color:#fff;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#eee;}@media (max-width:700px){#theme-picker{background:#fff;}}#all-types{background-color:#fff;}#all-types:hover{background-color:#f9f9f9;}.search-results .result-name span.alias{color:#000;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#F1F1F1;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F1F1F1;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#E0E0E0;}div.files>.selected{background-color:#fff;}.setting-line>.title{border-bottom-color:#D5D5D5;} \ No newline at end of file + body{background-color:white;color:black;}h1,h2,h3,h4{color:black;}h1.fqn{border-bottom-color:#DDDDDD;}h2,h3,h4{border-bottom-color:#DDDDDD;}.in-band{background-color:white;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#F5F5F5;}pre,.rustdoc.source .example-wrap{background-color:#F5F5F5;}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:#F5F5F5;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.rust-logo{}::-webkit-scrollbar-track{background-color:#ecebeb;}::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar::-webkit-scrollbar-track{background-color:#dcdcdc;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar .current,.sidebar a:hover{background-color:#fff;}.source .sidebar{background-color:#f1f1f1;}.line-numbers span{color:#c67e2d;}.line-numbers .line-highlighted{background-color:#FDFFD3 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#ddd;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.search-results a:hover{background-color:#ddd;}.search-results a:focus{color:#000 !important;background-color:#ccc;}.search-results a:focus span{color:#000 !important;}a.result-trait:focus{background-color:#c7b6ff;}a.result-traitalias:focus{background-color:#c7b6ff;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-enum:focus{background-color:#e7b1a0;}a.result-struct:focus{background-color:#e7b1a0;}a.result-union:focus{background-color:#e7b1a0;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#c6afb3;}a.result-type:focus{background-color:#e7b1a0;}a.result-associatedtype:focus{background-color:#afc6e4;}a.result-foreigntype:focus{background-color:#e7b1a0;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#8ce488;}a.result-constant:focus,a.result-static:focus{background-color:#afc6e4;}a.result-primitive:focus{background-color:#e7b1a0;}a.result-keyword:focus{background-color:#afc6e4;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#AD378A;}.content span.struct,.content a.struct,.block a.current.struct{color:#AD378A;}.content span.type,.content a.type,.block a.current.type{color:#AD378A;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#3873AD;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#3873AD;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#068000;}.content span.union,.content a.union,.block a.current.union{color:#AD378A;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#3873AD;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#AD378A;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#3873AD;}.content span.trait,.content a.trait,.block a.current.trait{color:#6E4FC9;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#5137AD;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#AD7C37;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#3873AD;}.sidebar a{color:#356da4;}.sidebar a.current.enum{color:#a63283;}.sidebar a.current.struct{color:#a63283;}.sidebar a.current.type{color:#a63283;}.sidebar a.current.associatedtype{color:#356da4;}.sidebar a.current.foreigntype{color:#356da4;}.sidebar a.current.attr,.sidebar a.current.derive,.sidebar a.current.macro{color:#067901;}.sidebar a.current.union{color:#a63283;}.sidebar a.current.constant .sidebar a.current.static{color:#356da4;}.sidebar a.current.primitive{color:#a63283;}.sidebar a.current.externcrate .sidebar a.current.mod{color:#356da4;}.sidebar a.current.trait{color:#6849c3;}.sidebar a.current.traitalias{color:#4b349e;}.sidebar a.current.fn,.sidebar a.current.method,.sidebar a.current.tymethod{color:#a67736;}.sidebar a.current.keyword{color:#356da4;}nav.main .current{border-top-color:#000;border-bottom-color:#000;}nav.main .separator{border:1px solid #000;}a{color:#3873AD;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,.in-band a{color:#000;}.search-results a{color:initial;}a.test-arrow{color:#f5f5f5;}body.source .example-wrap pre.rust a{background:#eee;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search,.search-input{color:#555;background-color:white;border-color:#e0e0e0;}.search-input:focus{border-color:#66afe9;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:black;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#8959A8;}pre.rust .kw-2,pre.rust .prelude-ty{color:#4271AE;}pre.rust .number,pre.rust .string{color:#718C00;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#C82829;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#B76514;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#c7c7c7;}a.test-arrow{background-color:rgb(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background:#FDFFD3;border-right:3px solid #AD7C37;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.5);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.5);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#3873AD;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}.notable-traits-tooltiptext .notable{border-bottom-color:#DDDDDD;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#F5F5F5;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F5F5F5;border-right-color:#000;}#sidebar-filler{background-color:#F5F5F5;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow:inset 0 -1px 0 #c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background-color:#fff;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#717171;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(35%);}#theme-choices{border-color:#ccc;background-color:#fff;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#eee;}@media (max-width:700px){#theme-picker{background:#fff;}}.search-results .result-name span.alias{color:#000;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#F5F5F5;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F5F5F5;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#E0E0E0;}div.files>.selected{background-color:#fff;}.setting-line>.title{border-bottom-color:#D5D5D5;} \ No newline at end of file diff --git a/main.js b/main.js index f2cbb9b7..44f37e5d 100644 --- a/main.js +++ b/main.js @@ -1,8 +1,8 @@ -if(!String.prototype.startsWith){String.prototype.startsWith=function(searchString,position){position=position||0;return this.indexOf(searchString,position)===position}}if(!String.prototype.endsWith){String.prototype.endsWith=function(suffix,length){var l=length||this.length;return this.indexOf(suffix,l-suffix.length)!==-1}}if(!DOMTokenList.prototype.add){DOMTokenList.prototype.add=function(className){if(className&&!hasClass(this,className)){if(this.className&&this.className.length>0){this.className+=" "+className}else{this.className=className}}}}if(!DOMTokenList.prototype.remove){DOMTokenList.prototype.remove=function(className){if(className&&this.className){this.className=(" "+this.className+" ").replace(" "+className+" "," ").trim()}}}(function(){var rustdocVars=document.getElementById("rustdoc-vars");if(rustdocVars){window.rootPath=rustdocVars.attributes["data-root-path"].value;window.currentCrate=rustdocVars.attributes["data-current-crate"].value;window.searchJS=rustdocVars.attributes["data-search-js"].value;window.searchIndexJS=rustdocVars.attributes["data-search-index-js"].value}var sidebarVars=document.getElementById("sidebar-vars");if(sidebarVars){window.sidebarCurrent={name:sidebarVars.attributes["data-name"].value,ty:sidebarVars.attributes["data-ty"].value,relpath:sidebarVars.attributes["data-relpath"].value,}}}());function getVirtualKey(ev){if("key"in ev&&typeof ev.key!="undefined"){return ev.key}var c=ev.charCode||ev.keyCode;if(c==27){return"Escape"}return String.fromCharCode(c)}var THEME_PICKER_ELEMENT_ID="theme-picker";var THEMES_ELEMENT_ID="theme-choices";function getThemesElement(){return document.getElementById(THEMES_ELEMENT_ID)}function getThemePickerElement(){return document.getElementById(THEME_PICKER_ELEMENT_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function showThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="block";themePicker.style.borderBottomRightRadius="0";themePicker.style.borderBottomLeftRadius="0"}function hideThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="none";themePicker.style.borderBottomRightRadius="3px";themePicker.style.borderBottomLeftRadius="3px"}(function(){var themeChoices=getThemesElement();var themePicker=getThemePickerElement();var availableThemes=["ayu","dark","light"];function switchThemeButtonState(){if(themeChoices.style.display==="block"){hideThemeButtonState()}else{showThemeButtonState()}}function handleThemeButtonsBlur(e){var active=document.activeElement;var related=e.relatedTarget;if(active.id!==THEME_PICKER_ELEMENT_ID&&(!active.parentNode||active.parentNode.id!==THEMES_ELEMENT_ID)&&(!related||(related.id!==THEME_PICKER_ELEMENT_ID&&(!related.parentNode||related.parentNode.id!==THEMES_ELEMENT_ID)))){hideThemeButtonState()}}themePicker.onclick=switchThemeButtonState;themePicker.onblur=handleThemeButtonsBlur;availableThemes.forEach(function(item){var but=document.createElement("button");but.textContent=item;but.onclick=function(){switchTheme(window.currentTheme,window.mainTheme,item,true);useSystemTheme(false)};but.onblur=handleThemeButtonsBlur;themeChoices.appendChild(but)})}());(function(){"use strict";window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:function(){return document.getElementById("search")},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:function(){if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},focus:function(){searchState.input.focus()},defocus:function(){searchState.input.blur()},showResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(main,"hidden");removeClass(search,"hidden");searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=searchState.titleBeforeSearch;if(searchState.browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:function(){var params={};window.location.search.substring(1).split("&").map(function(s){var pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},putBackSearch:function(search_input){var search=searchState.outputElement();if(search_input.value!==""&&hasClass(search,"hidden")){searchState.showResults(search);if(searchState.browserSupportsHistoryApi()){var extra="?search="+encodeURIComponent(search_input.value);history.replaceState(search_input.value,"",getNakedUrl()+extra+window.location.hash)}document.title=searchState.title}},browserSupportsHistoryApi:function(){return window.history&&typeof window.history.pushState==="function"},setup:function(){var search_input=searchState.input;if(!searchState.input){return}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS);loadScript(window.searchIndexJS)}}search_input.addEventListener("focus",function(){searchState.putBackSearch(this);search_input.origPlaceholder=searchState.input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});search_input.addEventListener("blur",function(){search_input.placeholder=searchState.input.origPlaceholder});search_input.removeAttribute('disabled');searchState.addCrateDropdown(window.ALL_CRATES);var params=searchState.getQueryStringParams();if(params.search!==undefined){var search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search);loadSearch()}},addCrateDropdown:function(crates){var elem=document.getElementById("crate-search");if(!elem){return}var savedCrate=getSettingValue("saved-filter-crate");for(var i=0,len=crates.length;i0){return tmp}}return null}function showSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){addClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];if(sidebar){addClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(!filler){var div=document.createElement("div");div.id="sidebar-filler";sidebar.appendChild(div)}}}function hideSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){removeClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(filler){filler.remove()}document.getElementsByTagName("body")[0].style.marginTop=""}var toggleAllDocsId="toggle-all-docs";var main=document.getElementById("main");var savedHash="";function handleHashes(ev){var elem;var search=searchState.outputElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){searchState.hideResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(searchState.browserSupportsHistoryApi()){history.replaceState(hash,"",getNakedUrl()+window.location.search+"#"+hash)}elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function getHelpElement(build){if(build){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display){help=help?help:getHelpElement(true);if(hasClass(help,"hidden")){ev.preventDefault();removeClass(help,"hidden");addClass(document.body,"blur")}}else{help=help?help:getHelpElement(false);if(help&&!hasClass(help,"hidden")){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=searchState.outputElement();if(help&&!hasClass(help,"hidden")){displayHelp(false,ev,help)}else if(search&&!hasClass(search,"hidden")){searchState.clearInputTimeout();ev.preventDefault();searchState.hideResults(search)}searchState.defocus();hideThemeButtonState()}var disableShortcuts=getSettingValue("disable-shortcuts")==="true";function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":displayHelp(false,ev);ev.preventDefault();searchState.focus();break;case"+":case"-":ev.preventDefault();toggleAllDocs();break;case"?":displayHelp(true,ev);break;case"t":case"T":displayHelp(false,ev);ev.preventDefault();var themePicker=getThemePickerElement();themePicker.click();themePicker.focus();break;default:if(getThemePickerElement().parentNode.contains(ev.target)){handleThemeKeyDown(ev)}}}}function handleThemeKeyDown(ev){var active=document.activeElement;var themes=getThemesElement();switch(getVirtualKey(ev)){case"ArrowUp":ev.preventDefault();if(active.previousElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id===THEME_PICKER_ELEMENT_ID&&themes.style.display==="none"){ev.preventDefault();showThemeButtonState();themes.firstElementChild.focus()}break;case"Home":ev.preventDefault();themes.firstElementChild.focus();break;case"End":ev.preventDefault();themes.lastElementChild.focus();break}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);(function(){var x=document.getElementsByClassName("version-selector");if(x.length>0){x[0].onchange=function(){var i,match,url=document.location.href,stripped="",len=window.rootPath.match(/\.\.\//g).length+1;for(i=0;i .in-band > .trait").textContent;var baseIdName="impl-"+traitName+"-";var libs=Object.getOwnPropertyNames(imp);for(var i=0,llength=libs.length;i0){this.className+=" "+className}else{this.className=className}}}}if(!DOMTokenList.prototype.remove){DOMTokenList.prototype.remove=function(className){if(className&&this.className){this.className=(" "+this.className+" ").replace(" "+className+" "," ").trim()}}}function getVar(name){var el=document.getElementById("rustdoc-vars");if(el){return el.attributes["data-"+name].value}else{return null}}function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}(function(){window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");window.searchJS=resourcePath("search",".js");window.searchIndexJS=resourcePath("search-index",".js");var sidebarVars=document.getElementById("sidebar-vars");if(sidebarVars){window.sidebarCurrent={name:sidebarVars.attributes["data-name"].value,ty:sidebarVars.attributes["data-ty"].value,relpath:sidebarVars.attributes["data-relpath"].value,};var mobileLocationTitle=document.querySelector(".mobile-topbar h2.location");var locationTitle=document.querySelector(".sidebar h2.location");if(mobileLocationTitle&&locationTitle){mobileLocationTitle.innerHTML=locationTitle.innerHTML}}}());function getVirtualKey(ev){if("key"in ev&&typeof ev.key!="undefined"){return ev.key}var c=ev.charCode||ev.keyCode;if(c==27){return"Escape"}return String.fromCharCode(c)}var THEME_PICKER_ELEMENT_ID="theme-picker";var THEMES_ELEMENT_ID="theme-choices";var MAIN_ID="main-content";function getThemesElement(){return document.getElementById(THEMES_ELEMENT_ID)}function getThemePickerElement(){return document.getElementById(THEME_PICKER_ELEMENT_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function showThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="block";themePicker.style.borderBottomRightRadius="0";themePicker.style.borderBottomLeftRadius="0"}function hideThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="none";themePicker.style.borderBottomRightRadius="3px";themePicker.style.borderBottomLeftRadius="3px"}(function(){if(!document.location.href.startsWith("file:///")){return}var themeChoices=getThemesElement();var themePicker=getThemePickerElement();var availableThemes=getVar("themes").split(",");removeClass(themeChoices.parentElement,"hidden");function switchThemeButtonState(){if(themeChoices.style.display==="block"){hideThemeButtonState()}else{showThemeButtonState()}}function handleThemeButtonsBlur(e){var active=document.activeElement;var related=e.relatedTarget;if(active.id!==THEME_PICKER_ELEMENT_ID&&(!active.parentNode||active.parentNode.id!==THEMES_ELEMENT_ID)&&(!related||(related.id!==THEME_PICKER_ELEMENT_ID&&(!related.parentNode||related.parentNode.id!==THEMES_ELEMENT_ID)))){hideThemeButtonState()}}themePicker.onclick=switchThemeButtonState;themePicker.onblur=handleThemeButtonsBlur;availableThemes.forEach(function(item){var but=document.createElement("button");but.textContent=item;but.onclick=function(){switchTheme(window.currentTheme,window.mainTheme,item,true);useSystemTheme(false)};but.onblur=handleThemeButtonsBlur;themeChoices.appendChild(but)})}());(function(){"use strict";window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:function(){return document.getElementById("search")},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:function(){if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},focus:function(){searchState.input.focus()},defocus:function(){searchState.input.blur()},showResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(main,"hidden");removeClass(search,"hidden");searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=searchState.titleBeforeSearch;if(searchState.browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:function(){var params={};window.location.search.substring(1).split("&").map(function(s){var pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},browserSupportsHistoryApi:function(){return window.history&&typeof window.history.pushState==="function"},setup:function(){var search_input=searchState.input;if(!searchState.input){return}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS);loadScript(window.searchIndexJS)}}search_input.addEventListener("focus",function(){search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!=''){loadSearch()}var params=searchState.getQueryStringParams();if(params.search!==undefined){var search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search);loadSearch()}},};function getPageId(){if(window.location.hash){var tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}var toggleAllDocsId="toggle-all-docs";var main=document.getElementById(MAIN_ID);var savedHash="";function handleHashes(ev){var elem;var search=searchState.outputElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){searchState.hideResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(searchState.browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown");handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function getHelpElement(build){if(build){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display){help=help?help:getHelpElement(true);if(hasClass(help,"hidden")){ev.preventDefault();removeClass(help,"hidden");addClass(document.body,"blur")}}else{help=help?help:getHelpElement(false);if(help&&!hasClass(help,"hidden")){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=searchState.outputElement();if(help&&!hasClass(help,"hidden")){displayHelp(false,ev,help)}else if(search&&!hasClass(search,"hidden")){searchState.clearInputTimeout();ev.preventDefault();searchState.hideResults(search)}searchState.defocus();hideThemeButtonState()}var disableShortcuts=getSettingValue("disable-shortcuts")==="true";function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":displayHelp(false,ev);ev.preventDefault();searchState.focus();break;case"+":case"-":ev.preventDefault();toggleAllDocs();break;case"?":displayHelp(true,ev);break;case"t":case"T":displayHelp(false,ev);ev.preventDefault();var themePicker=getThemePickerElement();themePicker.click();themePicker.focus();break;default:if(getThemePickerElement().parentNode.contains(ev.target)){handleThemeKeyDown(ev)}}}}function handleThemeKeyDown(ev){var active=document.activeElement;var themes=getThemesElement();switch(getVirtualKey(ev)){case"ArrowUp":ev.preventDefault();if(active.previousElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id===THEME_PICKER_ELEMENT_ID&&themes.style.display==="none"){ev.preventDefault();showThemeButtonState();themes.firstElementChild.focus()}break;case"Home":ev.preventDefault();themes.firstElementChild.focus();break;case"End":ev.preventDefault();themes.lastElementChild.focus();break}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);(function(){var x=document.getElementsByClassName("version-selector");if(x.length>0){x[0].onchange=function(){var i,match,url=document.location.href,stripped="",len=window.rootPath.match(/\.\.\//g).length+1;for(i=0;i${longty}`;div.appendChild(h3);var ul=document.createElement("ul");for(var i=0,len=filtered.length;i .in-band > .trait").textContent;var baseIdName="impl-"+traitName+"-";var libs=Object.getOwnPropertyNames(imp);for(var i=0,llength=libs.length;i summary:not(.hideme)"),function(el){el.addEventListener("click",function(e){if(e.target.tagName!="SUMMARY"&&e.target.tagName!="A"){e.preventDefault()}})});onEachLazy(document.getElementsByClassName("notable-traits"),function(e){e.onclick=function(){this.getElementsByClassName('notable-traits-tooltiptext')[0].classList.toggle("force-tooltip")}});var sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",function(){var sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){addClass(sidebar,"shown")}else{removeClass(sidebar,"shown")}})}var buildHelperPopup=function(){var popup=document.createElement("aside");addClass(popup,"hidden");popup.id="help";popup.addEventListener("click",function(ev){if(ev.target===popup){displayHelp(false,ev)}});var book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \ the rustdoc book.";var container=document.createElement("div");var shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["T","Focus the theme picker menu"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(function(x){return"
"+x[0].split(" ").map(function(y,index){return(index&1)===0?""+y+"":" "+y+" "}).join("")+"
"+x[1]+"
"}).join("");var div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

Keyboard Shortcuts

"+shortcuts+"
";var infos=["Prefix searches with a type followed by a colon (e.g., fn:) to \ restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ enum, trait, type, macro, \ and const.","Search functions by type signature (e.g., vec -> usize or \ * -> vec)","Search multiple things at once by splitting your query with comma (e.g., \ str,u8 or String,struct:Vec,test)","You can look for items with an exact name by putting double quotes around \ - your request: \"string\"","Look for items inside another one by searching for a path: vec::Vec",].map(function(x){return"

"+x+"

"}).join("");var div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

Search Tricks

"+infos;container.appendChild(book_info);container.appendChild(div_shortcuts);container.appendChild(div_infos);var rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";var rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc 1.57.0 (f1edd0429 2021-11-29)";rustdoc_version.appendChild(rustdoc_version_code);container.appendChild(rustdoc_version);popup.appendChild(container);insertAfter(popup,searchState.outputElement());buildHelperPopup=function(){}};onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){var reset_button_timeout=null;window.copy_path=function(but){var parent=but.parentElement;var path=[];onEach(parent.childNodes,function(child){if(child.tagName==='A'){path.push(child.textContent)}});var el=document.createElement('textarea');el.value=path.join('::');el.setAttribute('readonly','');el.style.position='absolute';el.style.left='-9999px';document.body.appendChild(el);el.select();document.execCommand('copy');document.body.removeChild(el);but.children[0].style.display='none';var tmp;if(but.childNodes.length<2){tmp=document.createTextNode('✓');but.appendChild(tmp)}else{onEachLazy(but.childNodes,function(e){if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent='✓'}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent='';reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file + your request: \"string\"","Look for items inside another one by searching for a path: vec::Vec",].map(function(x){return"

"+x+"

"}).join("");var div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

Search Tricks

"+infos;container.appendChild(book_info);container.appendChild(div_shortcuts);container.appendChild(div_infos);var rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";var rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);container.appendChild(rustdoc_version);popup.appendChild(container);insertAfter(popup,document.querySelector("main"));buildHelperPopup=function(){}};onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){var reset_button_timeout=null;window.copy_path=function(but){var parent=but.parentElement;var path=[];onEach(parent.childNodes,function(child){if(child.tagName==='A'){path.push(child.textContent)}});var el=document.createElement('textarea');el.value=path.join('::');el.setAttribute('readonly','');el.style.position='absolute';el.style.left='-9999px';document.body.appendChild(el);el.select();document.execCommand('copy');document.body.removeChild(el);but.children[0].style.display='none';var tmp;if(but.childNodes.length<2){tmp=document.createTextNode('✓');but.appendChild(tmp)}else{onEachLazy(but.childNodes,function(e){if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent='✓'}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent='';reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/mcaptcha/all.html b/mcaptcha/all.html index 6bc386d6..a9e92e97 100644 --- a/mcaptcha/all.html +++ b/mcaptcha/all.html @@ -1,5 +1,7 @@ -List of all items in this crate

List of all items[] - -

Structs

Enums

Macros

Functions

Typedefs

Constants

- +List of all items in this crate + +

List of all items

Structs

Enums

Macros

Functions

Typedefs

Constants

\ No newline at end of file diff --git a/mcaptcha/api/index.html b/mcaptcha/api/index.html index ddf57a61..821e01eb 100644 --- a/mcaptcha/api/index.html +++ b/mcaptcha/api/index.html @@ -1,4 +1,9 @@ -mcaptcha::api - Rust

Module mcaptcha::api[][src]

Modules

-
- +mcaptcha::api - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/delete/fn.services.html b/mcaptcha/api/v1/account/delete/fn.services.html index 57094c09..9f5f4d44 100644 --- a/mcaptcha/api/v1/account/delete/fn.services.html +++ b/mcaptcha/api/v1/account/delete/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::account::delete - Rust

Function mcaptcha::api::v1::account::delete::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::account::delete - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/delete/index.html b/mcaptcha/api/v1/account/delete/index.html index e5162b99..fdc6b696 100644 --- a/mcaptcha/api/v1/account/delete/index.html +++ b/mcaptcha/api/v1/account/delete/index.html @@ -1,6 +1,11 @@ -mcaptcha::api::v1::account::delete - Rust

Module mcaptcha::api::v1::account::delete[][src]

Modules

-

Structs

-

Functions

-
- +mcaptcha::api::v1::account::delete - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/delete/runners/fn.delete_user.html b/mcaptcha/api/v1/account/delete/runners/fn.delete_user.html index 6f6633b3..ca054235 100644 --- a/mcaptcha/api/v1/account/delete/runners/fn.delete_user.html +++ b/mcaptcha/api/v1/account/delete/runners/fn.delete_user.html @@ -1,3 +1,8 @@ -delete_user in mcaptcha::api::v1::account::delete::runners - Rust

Function mcaptcha::api::v1::account::delete::runners::delete_user[][src]

pub async fn delete_user(name: &str, data: &AppData) -> Result<(), ServiceError>
- +delete_user in mcaptcha::api::v1::account::delete::runners - Rust + +
pub async fn delete_user(name: &str, data: &AppData) -> Result<(), ServiceError>
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/delete/runners/index.html b/mcaptcha/api/v1/account/delete/runners/index.html index c5488f13..6f8b7cdd 100644 --- a/mcaptcha/api/v1/account/delete/runners/index.html +++ b/mcaptcha/api/v1/account/delete/runners/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::account::delete::runners - Rust

Module mcaptcha::api::v1::account::delete::runners[][src]

Functions

-
- +mcaptcha::api::v1::account::delete::runners - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/delete/struct.delete_account.html b/mcaptcha/api/v1/account/delete/struct.delete_account.html index ba7671b6..7026ec19 100644 --- a/mcaptcha/api/v1/account/delete/struct.delete_account.html +++ b/mcaptcha/api/v1/account/delete/struct.delete_account.html @@ -1,21 +1,28 @@ -delete_account in mcaptcha::api::v1::account::delete - Rust

Struct mcaptcha::api::v1::account::delete::delete_account[][src]

pub struct delete_account;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +delete_account in mcaptcha::api::v1::account::delete - Rust + +
pub struct delete_account;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/email/fn.services.html b/mcaptcha/api/v1/account/email/fn.services.html index 7e69ebea..b1595e50 100644 --- a/mcaptcha/api/v1/account/email/fn.services.html +++ b/mcaptcha/api/v1/account/email/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::account::email - Rust

Function mcaptcha::api::v1::account::email::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::account::email - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/email/index.html b/mcaptcha/api/v1/account/email/index.html index 7c297bdb..30ebe8e1 100644 --- a/mcaptcha/api/v1/account/email/index.html +++ b/mcaptcha/api/v1/account/email/index.html @@ -1,6 +1,11 @@ -mcaptcha::api::v1::account::email - Rust

Module mcaptcha::api::v1::account::email[][src]

Structs

+mcaptcha::api::v1::account::email - Rust + +

Functions

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/email/struct.Email.html b/mcaptcha/api/v1/account/email/struct.Email.html index 55810316..2aaf689d 100644 --- a/mcaptcha/api/v1/account/email/struct.Email.html +++ b/mcaptcha/api/v1/account/email/struct.Email.html @@ -1,32 +1,38 @@ -Email in mcaptcha::api::v1::account::email - Rust

Struct mcaptcha::api::v1::account::email::Email[][src]

pub struct Email {
-    pub email: String,
-}

Fields

email: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Email in mcaptcha::api::v1::account::email - Rust + +
pub struct Email {
+    pub email: String,
+}

Fields

email: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/email/struct.email_exists.html b/mcaptcha/api/v1/account/email/struct.email_exists.html index 649bfba8..d51b4272 100644 --- a/mcaptcha/api/v1/account/email/struct.email_exists.html +++ b/mcaptcha/api/v1/account/email/struct.email_exists.html @@ -1,21 +1,28 @@ -email_exists in mcaptcha::api::v1::account::email - Rust

Struct mcaptcha::api::v1::account::email::email_exists[][src]

pub struct email_exists;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +email_exists in mcaptcha::api::v1::account::email - Rust + +
pub struct email_exists;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/email/struct.set_email.html b/mcaptcha/api/v1/account/email/struct.set_email.html index 35788517..deb51784 100644 --- a/mcaptcha/api/v1/account/email/struct.set_email.html +++ b/mcaptcha/api/v1/account/email/struct.set_email.html @@ -1,22 +1,29 @@ -set_email in mcaptcha::api::v1::account::email - Rust

Struct mcaptcha::api::v1::account::email::set_email[][src]

pub struct set_email;
Expand description

update email

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +set_email in mcaptcha::api::v1::account::email - Rust + +
pub struct set_email;
Expand description

update email

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/fn.services.html b/mcaptcha/api/v1/account/fn.services.html index 6384721f..d3a5f39e 100644 --- a/mcaptcha/api/v1/account/fn.services.html +++ b/mcaptcha/api/v1/account/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::account - Rust

Function mcaptcha::api::v1::account::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::account - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/index.html b/mcaptcha/api/v1/account/index.html index 230023c2..30458352 100644 --- a/mcaptcha/api/v1/account/index.html +++ b/mcaptcha/api/v1/account/index.html @@ -1,7 +1,12 @@ -mcaptcha::api::v1::account - Rust

Module mcaptcha::api::v1::account[][src]

Re-exports

-
pub use super::auth;
pub use super::mcaptcha;

Modules

-

Structs

-

Functions

-
- +mcaptcha::api::v1::account - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/password/fn.services.html b/mcaptcha/api/v1/account/password/fn.services.html index 80011877..533baf40 100644 --- a/mcaptcha/api/v1/account/password/fn.services.html +++ b/mcaptcha/api/v1/account/password/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::account::password - Rust

Function mcaptcha::api::v1::account::password::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::account::password - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/password/fn.update_password_runner.html b/mcaptcha/api/v1/account/password/fn.update_password_runner.html index 764c6fe4..2fa659c9 100644 --- a/mcaptcha/api/v1/account/password/fn.update_password_runner.html +++ b/mcaptcha/api/v1/account/password/fn.update_password_runner.html @@ -1,3 +1,8 @@ -update_password_runner in mcaptcha::api::v1::account::password - Rust

Function mcaptcha::api::v1::account::password::update_password_runner[][src]

async fn update_password_runner(
    user: &str,
    update: UpdatePassword,
    data: &Data
) -> Result<(), ServiceError>
- +update_password_runner in mcaptcha::api::v1::account::password - Rust + +
async fn update_password_runner(
    user: &str,
    update: UpdatePassword,
    data: &Data
) -> Result<(), ServiceError>
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/password/index.html b/mcaptcha/api/v1/account/password/index.html index 8d646f49..0b4c7cfc 100644 --- a/mcaptcha/api/v1/account/password/index.html +++ b/mcaptcha/api/v1/account/password/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::account::password - Rust

Module mcaptcha::api::v1::account::password[][src]

Structs

-

Functions

-
- +mcaptcha::api::v1::account::password - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/password/struct.ChangePasswordReqest.html b/mcaptcha/api/v1/account/password/struct.ChangePasswordReqest.html index 31c58509..0174b78e 100644 --- a/mcaptcha/api/v1/account/password/struct.ChangePasswordReqest.html +++ b/mcaptcha/api/v1/account/password/struct.ChangePasswordReqest.html @@ -1,35 +1,41 @@ -ChangePasswordReqest in mcaptcha::api::v1::account::password - Rust

Struct mcaptcha::api::v1::account::password::ChangePasswordReqest[][src]

pub struct ChangePasswordReqest {
-    pub password: String,
-    pub new_password: String,
-    pub confirm_new_password: String,
-}

Fields

password: Stringnew_password: Stringconfirm_new_password: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Performs the conversion.

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +ChangePasswordReqest in mcaptcha::api::v1::account::password - Rust + +
pub struct ChangePasswordReqest {
+    pub password: String,
+    pub new_password: String,
+    pub confirm_new_password: String,
+}

Fields

password: Stringnew_password: Stringconfirm_new_password: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Performs the conversion.

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/password/struct.UpdatePassword.html b/mcaptcha/api/v1/account/password/struct.UpdatePassword.html index 4b0305af..9c35260f 100644 --- a/mcaptcha/api/v1/account/password/struct.UpdatePassword.html +++ b/mcaptcha/api/v1/account/password/struct.UpdatePassword.html @@ -1,25 +1,32 @@ -UpdatePassword in mcaptcha::api::v1::account::password - Rust

Struct mcaptcha::api::v1::account::password::UpdatePassword[][src]

pub struct UpdatePassword {
-    pub new_password: String,
-    pub confirm_new_password: String,
-}

Fields

new_password: Stringconfirm_new_password: String

Trait Implementations

Performs the conversion.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +UpdatePassword in mcaptcha::api::v1::account::password - Rust + +
pub struct UpdatePassword {
+    pub new_password: String,
+    pub confirm_new_password: String,
+}

Fields

new_password: Stringconfirm_new_password: String

Trait Implementations

Performs the conversion.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/password/struct.update_user_password.html b/mcaptcha/api/v1/account/password/struct.update_user_password.html index 87b0bed2..1c78a478 100644 --- a/mcaptcha/api/v1/account/password/struct.update_user_password.html +++ b/mcaptcha/api/v1/account/password/struct.update_user_password.html @@ -1,21 +1,28 @@ -update_user_password in mcaptcha::api::v1::account::password - Rust

Struct mcaptcha::api::v1::account::password::update_user_password[][src]

pub struct update_user_password;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +update_user_password in mcaptcha::api::v1::account::password - Rust + +
pub struct update_user_password;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/routes/index.html b/mcaptcha/api/v1/account/routes/index.html index 34c7d6de..1fa2f31d 100644 --- a/mcaptcha/api/v1/account/routes/index.html +++ b/mcaptcha/api/v1/account/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::account::routes - Rust

Module mcaptcha::api::v1::account::routes[][src]

Structs

-
- +mcaptcha::api::v1::account::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/routes/struct.Account.html b/mcaptcha/api/v1/account/routes/struct.Account.html index 0eb554fc..c2c3d8c4 100644 --- a/mcaptcha/api/v1/account/routes/struct.Account.html +++ b/mcaptcha/api/v1/account/routes/struct.Account.html @@ -1,30 +1,37 @@ -Account in mcaptcha::api::v1::account::routes - Rust

Struct mcaptcha::api::v1::account::routes::Account[][src]

pub struct Account {
-    pub delete: &'static str,
-    pub email_exists: &'static str,
-    pub get_secret: &'static str,
-    pub update_email: &'static str,
-    pub update_password: &'static str,
-    pub update_secret: &'static str,
-    pub username_exists: &'static str,
-    pub update_username: &'static str,
-}

Fields

delete: &'static stremail_exists: &'static strget_secret: &'static strupdate_email: &'static strupdate_password: &'static strupdate_secret: &'static strusername_exists: &'static strupdate_username: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Account in mcaptcha::api::v1::account::routes - Rust + +
pub struct Account {
+    pub delete: &'static str,
+    pub email_exists: &'static str,
+    pub get_secret: &'static str,
+    pub update_email: &'static str,
+    pub update_password: &'static str,
+    pub update_secret: &'static str,
+    pub username_exists: &'static str,
+    pub update_username: &'static str,
+}

Fields

delete: &'static stremail_exists: &'static strget_secret: &'static strupdate_email: &'static strupdate_password: &'static strupdate_secret: &'static strusername_exists: &'static strupdate_username: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/secret/fn.services.html b/mcaptcha/api/v1/account/secret/fn.services.html index 32cf47c0..19d89bd7 100644 --- a/mcaptcha/api/v1/account/secret/fn.services.html +++ b/mcaptcha/api/v1/account/secret/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::account::secret - Rust

Function mcaptcha::api::v1::account::secret::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::account::secret - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/secret/index.html b/mcaptcha/api/v1/account/secret/index.html index 22ac9cc7..add6111c 100644 --- a/mcaptcha/api/v1/account/secret/index.html +++ b/mcaptcha/api/v1/account/secret/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::account::secret - Rust

Module mcaptcha::api::v1::account::secret[][src]

Structs

-

Functions

-
- +mcaptcha::api::v1::account::secret - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/secret/struct.Secret.html b/mcaptcha/api/v1/account/secret/struct.Secret.html index 0a589435..20306bfd 100644 --- a/mcaptcha/api/v1/account/secret/struct.Secret.html +++ b/mcaptcha/api/v1/account/secret/struct.Secret.html @@ -1,32 +1,38 @@ -Secret in mcaptcha::api::v1::account::secret - Rust

Struct mcaptcha::api::v1::account::secret::Secret[][src]

pub struct Secret {
-    pub secret: String,
-}

Fields

secret: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Secret in mcaptcha::api::v1::account::secret - Rust + +
pub struct Secret {
+    pub secret: String,
+}

Fields

secret: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/secret/struct.get_secret.html b/mcaptcha/api/v1/account/secret/struct.get_secret.html index 64b716e2..639a2523 100644 --- a/mcaptcha/api/v1/account/secret/struct.get_secret.html +++ b/mcaptcha/api/v1/account/secret/struct.get_secret.html @@ -1,21 +1,28 @@ -get_secret in mcaptcha::api::v1::account::secret - Rust

Struct mcaptcha::api::v1::account::secret::get_secret[][src]

pub struct get_secret;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +get_secret in mcaptcha::api::v1::account::secret - Rust + +
pub struct get_secret;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/secret/struct.update_user_secret.html b/mcaptcha/api/v1/account/secret/struct.update_user_secret.html index 9b018cae..1e56ab06 100644 --- a/mcaptcha/api/v1/account/secret/struct.update_user_secret.html +++ b/mcaptcha/api/v1/account/secret/struct.update_user_secret.html @@ -1,21 +1,28 @@ -update_user_secret in mcaptcha::api::v1::account::secret - Rust

Struct mcaptcha::api::v1::account::secret::update_user_secret[][src]

pub struct update_user_secret;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +update_user_secret in mcaptcha::api::v1::account::secret - Rust + +
pub struct update_user_secret;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/struct.AccountCheckPayload.html b/mcaptcha/api/v1/account/struct.AccountCheckPayload.html index f478244e..a34d498c 100644 --- a/mcaptcha/api/v1/account/struct.AccountCheckPayload.html +++ b/mcaptcha/api/v1/account/struct.AccountCheckPayload.html @@ -1,32 +1,38 @@ -AccountCheckPayload in mcaptcha::api::v1::account - Rust

Struct mcaptcha::api::v1::account::AccountCheckPayload[][src]

pub struct AccountCheckPayload {
-    pub val: String,
-}

Fields

val: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +AccountCheckPayload in mcaptcha::api::v1::account - Rust + +
pub struct AccountCheckPayload {
+    pub val: String,
+}

Fields

val: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/struct.AccountCheckResp.html b/mcaptcha/api/v1/account/struct.AccountCheckResp.html index c25edfa2..74728692 100644 --- a/mcaptcha/api/v1/account/struct.AccountCheckResp.html +++ b/mcaptcha/api/v1/account/struct.AccountCheckResp.html @@ -1,32 +1,38 @@ -AccountCheckResp in mcaptcha::api::v1::account - Rust

Struct mcaptcha::api::v1::account::AccountCheckResp[][src]

pub struct AccountCheckResp {
-    pub exists: bool,
-}

Fields

exists: bool

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +AccountCheckResp in mcaptcha::api::v1::account - Rust + +
pub struct AccountCheckResp {
+    pub exists: bool,
+}

Fields

exists: bool

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/username/fn.services.html b/mcaptcha/api/v1/account/username/fn.services.html index 31c52f7d..a5ed88bb 100644 --- a/mcaptcha/api/v1/account/username/fn.services.html +++ b/mcaptcha/api/v1/account/username/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::account::username - Rust

Function mcaptcha::api::v1::account::username::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::account::username - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/username/index.html b/mcaptcha/api/v1/account/username/index.html index af62fd45..76d1e8bc 100644 --- a/mcaptcha/api/v1/account/username/index.html +++ b/mcaptcha/api/v1/account/username/index.html @@ -1,7 +1,12 @@ -mcaptcha::api::v1::account::username - Rust

Module mcaptcha::api::v1::account::username[][src]

Modules

-

Structs

+mcaptcha::api::v1::account::username - Rust + +

Functions

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/username/runners/fn.username_exists.html b/mcaptcha/api/v1/account/username/runners/fn.username_exists.html index 51f1dde3..59f04fc1 100644 --- a/mcaptcha/api/v1/account/username/runners/fn.username_exists.html +++ b/mcaptcha/api/v1/account/username/runners/fn.username_exists.html @@ -1,3 +1,8 @@ -username_exists in mcaptcha::api::v1::account::username::runners - Rust

Function mcaptcha::api::v1::account::username::runners::username_exists[][src]

pub async fn username_exists(
    payload: &AccountCheckPayload,
    data: &AppData
) -> Result<AccountCheckResp, ServiceError>
- +username_exists in mcaptcha::api::v1::account::username::runners - Rust + +
pub async fn username_exists(
    payload: &AccountCheckPayload,
    data: &AppData
) -> Result<AccountCheckResp, ServiceError>
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/username/runners/index.html b/mcaptcha/api/v1/account/username/runners/index.html index 09132aa8..57b69806 100644 --- a/mcaptcha/api/v1/account/username/runners/index.html +++ b/mcaptcha/api/v1/account/username/runners/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::account::username::runners - Rust

Module mcaptcha::api::v1::account::username::runners[][src]

Functions

-
- +mcaptcha::api::v1::account::username::runners - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/username/struct.Username.html b/mcaptcha/api/v1/account/username/struct.Username.html index 37b4b3f1..02d846a1 100644 --- a/mcaptcha/api/v1/account/username/struct.Username.html +++ b/mcaptcha/api/v1/account/username/struct.Username.html @@ -1,32 +1,38 @@ -Username in mcaptcha::api::v1::account::username - Rust

Struct mcaptcha::api::v1::account::username::Username[][src]

pub struct Username {
-    pub username: String,
-}

Fields

username: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Username in mcaptcha::api::v1::account::username - Rust + +
pub struct Username {
+    pub username: String,
+}

Fields

username: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/username/struct.set_username.html b/mcaptcha/api/v1/account/username/struct.set_username.html index d7d3416f..974cce91 100644 --- a/mcaptcha/api/v1/account/username/struct.set_username.html +++ b/mcaptcha/api/v1/account/username/struct.set_username.html @@ -1,22 +1,29 @@ -set_username in mcaptcha::api::v1::account::username - Rust

Struct mcaptcha::api::v1::account::username::set_username[][src]

pub struct set_username;
Expand description

update username

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +set_username in mcaptcha::api::v1::account::username - Rust + +
pub struct set_username;
Expand description

update username

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/account/username/struct.username_exists.html b/mcaptcha/api/v1/account/username/struct.username_exists.html index fe711b8c..0c11d0bf 100644 --- a/mcaptcha/api/v1/account/username/struct.username_exists.html +++ b/mcaptcha/api/v1/account/username/struct.username_exists.html @@ -1,21 +1,28 @@ -username_exists in mcaptcha::api::v1::account::username - Rust

Struct mcaptcha::api::v1::account::username::username_exists[][src]

pub struct username_exists;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +username_exists in mcaptcha::api::v1::account::username - Rust + +
pub struct username_exists;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/fn.services.html b/mcaptcha/api/v1/auth/fn.services.html index 49f567a6..d83d3e4f 100644 --- a/mcaptcha/api/v1/auth/fn.services.html +++ b/mcaptcha/api/v1/auth/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::auth - Rust

Function mcaptcha::api::v1::auth::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::auth - Rust + +
+

Function mcaptcha::api::v1::auth::services

source · []
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/index.html b/mcaptcha/api/v1/auth/index.html index 6d92f58b..11d7b93e 100644 --- a/mcaptcha/api/v1/auth/index.html +++ b/mcaptcha/api/v1/auth/index.html @@ -1,6 +1,11 @@ -mcaptcha::api::v1::auth - Rust

Module mcaptcha::api::v1::auth[][src]

Modules

-

Structs

-

Functions

-
- +mcaptcha::api::v1::auth - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/routes/index.html b/mcaptcha/api/v1/auth/routes/index.html index 7a63ffbb..0aa8288a 100644 --- a/mcaptcha/api/v1/auth/routes/index.html +++ b/mcaptcha/api/v1/auth/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::auth::routes - Rust

Module mcaptcha::api::v1::auth::routes[][src]

Structs

-
- +mcaptcha::api::v1::auth::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/routes/struct.Auth.html b/mcaptcha/api/v1/auth/routes/struct.Auth.html index 26e6aadf..b0321e3e 100644 --- a/mcaptcha/api/v1/auth/routes/struct.Auth.html +++ b/mcaptcha/api/v1/auth/routes/struct.Auth.html @@ -1,25 +1,32 @@ -Auth in mcaptcha::api::v1::auth::routes - Rust

Struct mcaptcha::api::v1::auth::routes::Auth[][src]

pub struct Auth {
-    pub logout: &'static str,
-    pub login: &'static str,
-    pub register: &'static str,
-}

Fields

logout: &'static strlogin: &'static strregister: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Auth in mcaptcha::api::v1::auth::routes - Rust + +
pub struct Auth {
+    pub logout: &'static str,
+    pub login: &'static str,
+    pub register: &'static str,
+}

Fields

logout: &'static strlogin: &'static strregister: &'static str

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/runners/fn.login_runner.html b/mcaptcha/api/v1/auth/runners/fn.login_runner.html index 639952ec..28a77ee4 100644 --- a/mcaptcha/api/v1/auth/runners/fn.login_runner.html +++ b/mcaptcha/api/v1/auth/runners/fn.login_runner.html @@ -1,4 +1,9 @@ -login_runner in mcaptcha::api::v1::auth::runners - Rust

Function mcaptcha::api::v1::auth::runners::login_runner[][src]

pub async fn login_runner(
    payload: Login,
    data: &AppData
) -> Result<String, ServiceError>
Expand description

returns Ok(()) when everything checks out and the user is authenticated. Erros otherwise

-
- +login_runner in mcaptcha::api::v1::auth::runners - Rust + +
pub async fn login_runner(
    payload: Login,
    data: &AppData
) -> Result<String, ServiceError>
Expand description

returns Ok(()) when everything checks out and the user is authenticated. Erros otherwise

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/runners/fn.register_runner.html b/mcaptcha/api/v1/auth/runners/fn.register_runner.html index b73634a8..5facd632 100644 --- a/mcaptcha/api/v1/auth/runners/fn.register_runner.html +++ b/mcaptcha/api/v1/auth/runners/fn.register_runner.html @@ -1,3 +1,8 @@ -register_runner in mcaptcha::api::v1::auth::runners - Rust

Function mcaptcha::api::v1::auth::runners::register_runner[][src]

pub async fn register_runner(
    payload: &Register,
    data: &AppData
) -> Result<(), ServiceError>
- +register_runner in mcaptcha::api::v1::auth::runners - Rust + +
pub async fn register_runner(
    payload: &Register,
    data: &AppData
) -> Result<(), ServiceError>
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/runners/index.html b/mcaptcha/api/v1/auth/runners/index.html index 4355cef9..928c589f 100644 --- a/mcaptcha/api/v1/auth/runners/index.html +++ b/mcaptcha/api/v1/auth/runners/index.html @@ -1,6 +1,11 @@ -mcaptcha::api::v1::auth::runners - Rust

Module mcaptcha::api::v1::auth::runners[][src]

Structs

-

Functions

+mcaptcha::api::v1::auth::runners - Rust + +

Structs

+

Functions

returns Ok(()) when everything checks out and the user is authenticated. Erros otherwise

-
- +
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/runners/struct.Login.html b/mcaptcha/api/v1/auth/runners/struct.Login.html index 186c79a1..98663c50 100644 --- a/mcaptcha/api/v1/auth/runners/struct.Login.html +++ b/mcaptcha/api/v1/auth/runners/struct.Login.html @@ -1,33 +1,39 @@ -Login in mcaptcha::api::v1::auth::runners - Rust

Struct mcaptcha::api::v1::auth::runners::Login[][src]

pub struct Login {
-    pub login: String,
-    pub password: String,
-}

Fields

login: Stringpassword: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Login in mcaptcha::api::v1::auth::runners - Rust + +
pub struct Login {
+    pub login: String,
+    pub password: String,
+}

Fields

login: Stringpassword: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/runners/struct.Password.html b/mcaptcha/api/v1/auth/runners/struct.Password.html index bcb03281..1896516b 100644 --- a/mcaptcha/api/v1/auth/runners/struct.Password.html +++ b/mcaptcha/api/v1/auth/runners/struct.Password.html @@ -1,32 +1,38 @@ -Password in mcaptcha::api::v1::auth::runners - Rust

Struct mcaptcha::api::v1::auth::runners::Password[][src]

pub struct Password {
-    pub password: String,
-}

Fields

password: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Password in mcaptcha::api::v1::auth::runners - Rust + +
pub struct Password {
+    pub password: String,
+}

Fields

password: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/runners/struct.Register.html b/mcaptcha/api/v1/auth/runners/struct.Register.html index 815bb175..b44b4516 100644 --- a/mcaptcha/api/v1/auth/runners/struct.Register.html +++ b/mcaptcha/api/v1/auth/runners/struct.Register.html @@ -1,35 +1,41 @@ -Register in mcaptcha::api::v1::auth::runners - Rust

Struct mcaptcha::api::v1::auth::runners::Register[][src]

pub struct Register {
-    pub username: String,
-    pub password: String,
-    pub confirm_password: String,
-    pub email: Option<String>,
-}

Fields

username: Stringpassword: Stringconfirm_password: Stringemail: Option<String>

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Register in mcaptcha::api::v1::auth::runners - Rust + +
pub struct Register {
+    pub username: String,
+    pub password: String,
+    pub confirm_password: String,
+    pub email: Option<String>,
+}

Fields

username: Stringpassword: Stringconfirm_password: Stringemail: Option<String>

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/struct.login.html b/mcaptcha/api/v1/auth/struct.login.html index 096aaa0a..8031c5c9 100644 --- a/mcaptcha/api/v1/auth/struct.login.html +++ b/mcaptcha/api/v1/auth/struct.login.html @@ -1,21 +1,28 @@ -login in mcaptcha::api::v1::auth - Rust

Struct mcaptcha::api::v1::auth::login[][src]

pub struct login;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +login in mcaptcha::api::v1::auth - Rust + +
+

Struct mcaptcha::api::v1::auth::login

source · []
pub struct login;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/struct.register.html b/mcaptcha/api/v1/auth/struct.register.html index c5e38879..414cd6c6 100644 --- a/mcaptcha/api/v1/auth/struct.register.html +++ b/mcaptcha/api/v1/auth/struct.register.html @@ -1,21 +1,28 @@ -register in mcaptcha::api::v1::auth - Rust

Struct mcaptcha::api::v1::auth::register[][src]

pub struct register;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +register in mcaptcha::api::v1::auth - Rust + +
pub struct register;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/auth/struct.signout.html b/mcaptcha/api/v1/auth/struct.signout.html index 24adae99..7b167e81 100644 --- a/mcaptcha/api/v1/auth/struct.signout.html +++ b/mcaptcha/api/v1/auth/struct.signout.html @@ -1,21 +1,28 @@ -signout in mcaptcha::api::v1::auth - Rust

Struct mcaptcha::api::v1::auth::signout[][src]

pub struct signout;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +signout in mcaptcha::api::v1::auth - Rust + +
pub struct signout;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/fn.get_middleware.html b/mcaptcha/api/v1/fn.get_middleware.html new file mode 100644 index 00000000..ee5d6762 --- /dev/null +++ b/mcaptcha/api/v1/fn.get_middleware.html @@ -0,0 +1,8 @@ +get_middleware in mcaptcha::api::v1 - Rust + +
pub fn get_middleware() -> Authentication<Routes>
+ \ No newline at end of file diff --git a/mcaptcha/api/v1/fn.services.html b/mcaptcha/api/v1/fn.services.html index 2b842db7..e2631edd 100644 --- a/mcaptcha/api/v1/fn.services.html +++ b/mcaptcha/api/v1/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1 - Rust

Function mcaptcha::api::v1::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1 - Rust + +
+

Function mcaptcha::api::v1::services

source · []
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/index.html b/mcaptcha/api/v1/index.html index be561897..49aa0607 100644 --- a/mcaptcha/api/v1/index.html +++ b/mcaptcha/api/v1/index.html @@ -1,6 +1,12 @@ -mcaptcha::api::v1 - Rust

Module mcaptcha::api::v1[][src]

Re-exports

-
pub use routes::ROUTES;

Modules

-

Functions

-
- +mcaptcha::api::v1 - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/index.html b/mcaptcha/api/v1/mcaptcha/create/index.html index 8b9dc9e9..87ce8cc9 100644 --- a/mcaptcha/api/v1/mcaptcha/create/index.html +++ b/mcaptcha/api/v1/mcaptcha/create/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::mcaptcha::create - Rust

Module mcaptcha::api::v1::mcaptcha::create[][src]

Modules

-

Structs

-
- +mcaptcha::api::v1::mcaptcha::create - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/runner/fn.create.html b/mcaptcha/api/v1/mcaptcha/create/runner/fn.create.html index a9a1c9a5..8e0b8e8f 100644 --- a/mcaptcha/api/v1/mcaptcha/create/runner/fn.create.html +++ b/mcaptcha/api/v1/mcaptcha/create/runner/fn.create.html @@ -1,3 +1,8 @@ -create in mcaptcha::api::v1::mcaptcha::create::runner - Rust

Function mcaptcha::api::v1::mcaptcha::create::runner::create[][src]

pub async fn create(
    payload: &CreateCaptcha,
    data: &AppData,
    username: &str
) -> Result<MCaptchaDetails, ServiceError>
- +create in mcaptcha::api::v1::mcaptcha::create::runner - Rust + +
pub async fn create(
    payload: &CreateCaptcha,
    data: &AppData,
    username: &str
) -> Result<MCaptchaDetails, ServiceError>
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/runner/index.html b/mcaptcha/api/v1/mcaptcha/create/runner/index.html index 5ac125c4..9195d0ce 100644 --- a/mcaptcha/api/v1/mcaptcha/create/runner/index.html +++ b/mcaptcha/api/v1/mcaptcha/create/runner/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::mcaptcha::create::runner - Rust

Module mcaptcha::api::v1::mcaptcha::create::runner[][src]

Functions

-
- +mcaptcha::api::v1::mcaptcha::create::runner - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/struct.CreateCaptcha.html b/mcaptcha/api/v1/mcaptcha/create/struct.CreateCaptcha.html index fde92440..915ec523 100644 --- a/mcaptcha/api/v1/mcaptcha/create/struct.CreateCaptcha.html +++ b/mcaptcha/api/v1/mcaptcha/create/struct.CreateCaptcha.html @@ -1,27 +1,34 @@ -CreateCaptcha in mcaptcha::api::v1::mcaptcha::create - Rust

Struct mcaptcha::api::v1::mcaptcha::create::CreateCaptcha[][src]

pub struct CreateCaptcha {
-    pub levels: Vec<Level>,
-    pub duration: u32,
-    pub description: String,
-}

Fields

levels: Vec<Level>duration: u32description: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +CreateCaptcha in mcaptcha::api::v1::mcaptcha::create - Rust + +
pub struct CreateCaptcha {
+    pub levels: Vec<Level>,
+    pub duration: u32,
+    pub description: String,
+}

Fields

levels: Vec<Level>duration: u32description: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/struct.MCaptchaDetails.html b/mcaptcha/api/v1/mcaptcha/create/struct.MCaptchaDetails.html index 261916c6..324f53f5 100644 --- a/mcaptcha/api/v1/mcaptcha/create/struct.MCaptchaDetails.html +++ b/mcaptcha/api/v1/mcaptcha/create/struct.MCaptchaDetails.html @@ -1,33 +1,39 @@ -MCaptchaDetails in mcaptcha::api::v1::mcaptcha::create - Rust

Struct mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails[][src]

pub struct MCaptchaDetails {
-    pub name: String,
-    pub key: String,
-}

Fields

name: Stringkey: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +MCaptchaDetails in mcaptcha::api::v1::mcaptcha::create - Rust + +
pub struct MCaptchaDetails {
+    pub name: String,
+    pub key: String,
+}

Fields

name: Stringkey: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/struct.create.html b/mcaptcha/api/v1/mcaptcha/create/struct.create.html index 3934e938..e25f4886 100644 --- a/mcaptcha/api/v1/mcaptcha/create/struct.create.html +++ b/mcaptcha/api/v1/mcaptcha/create/struct.create.html @@ -1,21 +1,28 @@ -create in mcaptcha::api::v1::mcaptcha::create - Rust

Struct mcaptcha::api::v1::mcaptcha::create::create[][src]

pub struct create;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +create in mcaptcha::api::v1::mcaptcha::create - Rust + +
pub struct create;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/delete/index.html b/mcaptcha/api/v1/mcaptcha/delete/index.html index c71d40a1..f40ffa36 100644 --- a/mcaptcha/api/v1/mcaptcha/delete/index.html +++ b/mcaptcha/api/v1/mcaptcha/delete/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::mcaptcha::delete - Rust

Module mcaptcha::api::v1::mcaptcha::delete[][src]

Structs

-
- +mcaptcha::api::v1::mcaptcha::delete - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/delete/struct.DeleteCaptcha.html b/mcaptcha/api/v1/mcaptcha/delete/struct.DeleteCaptcha.html index 12380453..5954b950 100644 --- a/mcaptcha/api/v1/mcaptcha/delete/struct.DeleteCaptcha.html +++ b/mcaptcha/api/v1/mcaptcha/delete/struct.DeleteCaptcha.html @@ -1,33 +1,39 @@ -DeleteCaptcha in mcaptcha::api::v1::mcaptcha::delete - Rust

Struct mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha[][src]

pub struct DeleteCaptcha {
-    pub key: String,
-    pub password: String,
-}

Fields

key: Stringpassword: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +DeleteCaptcha in mcaptcha::api::v1::mcaptcha::delete - Rust + +
pub struct DeleteCaptcha {
+    pub key: String,
+    pub password: String,
+}

Fields

key: Stringpassword: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/delete/struct.delete.html b/mcaptcha/api/v1/mcaptcha/delete/struct.delete.html index 0546b7fd..f90f0c6e 100644 --- a/mcaptcha/api/v1/mcaptcha/delete/struct.delete.html +++ b/mcaptcha/api/v1/mcaptcha/delete/struct.delete.html @@ -1,21 +1,28 @@ -delete in mcaptcha::api::v1::mcaptcha::delete - Rust

Struct mcaptcha::api::v1::mcaptcha::delete::delete[][src]

pub struct delete;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +delete in mcaptcha::api::v1::mcaptcha::delete - Rust + +
pub struct delete;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/fn.services.html b/mcaptcha/api/v1/mcaptcha/easy/fn.services.html index fb8f6fb9..98b23ce8 100644 --- a/mcaptcha/api/v1/mcaptcha/easy/fn.services.html +++ b/mcaptcha/api/v1/mcaptcha/easy/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::mcaptcha::easy - Rust

Function mcaptcha::api::v1::mcaptcha::easy::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::mcaptcha::easy - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/index.html b/mcaptcha/api/v1/mcaptcha/easy/index.html index 52c3b130..76496496 100644 --- a/mcaptcha/api/v1/mcaptcha/easy/index.html +++ b/mcaptcha/api/v1/mcaptcha/easy/index.html @@ -1,6 +1,11 @@ -mcaptcha::api::v1::mcaptcha::easy - Rust

Module mcaptcha::api::v1::mcaptcha::easy[][src]

Modules

-

Structs

-

Functions

-
- +mcaptcha::api::v1::mcaptcha::easy - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/routes/index.html b/mcaptcha/api/v1/mcaptcha/easy/routes/index.html index 45fd11d4..9dc68b62 100644 --- a/mcaptcha/api/v1/mcaptcha/easy/routes/index.html +++ b/mcaptcha/api/v1/mcaptcha/easy/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::mcaptcha::easy::routes - Rust

Module mcaptcha::api::v1::mcaptcha::easy::routes[][src]

Structs

-
- +mcaptcha::api::v1::mcaptcha::easy::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/routes/struct.Easy.html b/mcaptcha/api/v1/mcaptcha/easy/routes/struct.Easy.html index 8a4398be..66d54b1c 100644 --- a/mcaptcha/api/v1/mcaptcha/easy/routes/struct.Easy.html +++ b/mcaptcha/api/v1/mcaptcha/easy/routes/struct.Easy.html @@ -1,25 +1,32 @@ -Easy in mcaptcha::api::v1::mcaptcha::easy::routes - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::routes::Easy[][src]

pub struct Easy {
-    pub create: &'static str,
-    pub update: &'static str,
-}

Fields

create: &'static str

easy is using defaults

-
update: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Easy in mcaptcha::api::v1::mcaptcha::easy::routes - Rust + +
pub struct Easy {
+    pub create: &'static str,
+    pub update: &'static str,
+}

Fields

create: &'static str

easy is using defaults

+
update: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/struct.TrafficPattern.html b/mcaptcha/api/v1/mcaptcha/easy/struct.TrafficPattern.html index d6c43d4a..3efce6c1 100644 --- a/mcaptcha/api/v1/mcaptcha/easy/struct.TrafficPattern.html +++ b/mcaptcha/api/v1/mcaptcha/easy/struct.TrafficPattern.html @@ -1,35 +1,41 @@ -TrafficPattern in mcaptcha::api::v1::mcaptcha::easy - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::TrafficPattern[][src]

pub struct TrafficPattern {
-    pub avg_traffic: u32,
-    pub peak_sustainable_traffic: u32,
-    pub broke_my_site_traffic: Option<u32>,
-    pub description: String,
-}

Fields

avg_traffic: u32peak_sustainable_traffic: u32broke_my_site_traffic: Option<u32>description: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +TrafficPattern in mcaptcha::api::v1::mcaptcha::easy - Rust + +
pub struct TrafficPattern {
+    pub avg_traffic: u32,
+    pub peak_sustainable_traffic: u32,
+    pub broke_my_site_traffic: Option<u32>,
+    pub description: String,
+}

Fields

avg_traffic: u32peak_sustainable_traffic: u32broke_my_site_traffic: Option<u32>description: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/struct.UpdateTrafficPattern.html b/mcaptcha/api/v1/mcaptcha/easy/struct.UpdateTrafficPattern.html index 07684ba1..5f1d65f8 100644 --- a/mcaptcha/api/v1/mcaptcha/easy/struct.UpdateTrafficPattern.html +++ b/mcaptcha/api/v1/mcaptcha/easy/struct.UpdateTrafficPattern.html @@ -1,33 +1,39 @@ -UpdateTrafficPattern in mcaptcha::api::v1::mcaptcha::easy - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern[][src]

pub struct UpdateTrafficPattern {
+UpdateTrafficPattern in mcaptcha::api::v1::mcaptcha::easy - Rust
+    
+    
pub struct UpdateTrafficPattern {
     pub pattern: TrafficPattern,
-    pub key: String,
-}

Fields

pattern: TrafficPatternkey: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- + pub key: String, +}

Fields

pattern: TrafficPatternkey: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/struct.create.html b/mcaptcha/api/v1/mcaptcha/easy/struct.create.html index e6ee90ba..17713cfe 100644 --- a/mcaptcha/api/v1/mcaptcha/easy/struct.create.html +++ b/mcaptcha/api/v1/mcaptcha/easy/struct.create.html @@ -1,21 +1,28 @@ -create in mcaptcha::api::v1::mcaptcha::easy - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::create[][src]

pub struct create;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +create in mcaptcha::api::v1::mcaptcha::easy - Rust + +
pub struct create;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/struct.update.html b/mcaptcha/api/v1/mcaptcha/easy/struct.update.html index 7e4754a9..67e99793 100644 --- a/mcaptcha/api/v1/mcaptcha/easy/struct.update.html +++ b/mcaptcha/api/v1/mcaptcha/easy/struct.update.html @@ -1,21 +1,28 @@ -update in mcaptcha::api::v1::mcaptcha::easy - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::update[][src]

pub struct update;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +update in mcaptcha::api::v1::mcaptcha::easy - Rust + +
pub struct update;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/fn.get_random.html b/mcaptcha/api/v1/mcaptcha/fn.get_random.html index 69029c42..45c04237 100644 --- a/mcaptcha/api/v1/mcaptcha/fn.get_random.html +++ b/mcaptcha/api/v1/mcaptcha/fn.get_random.html @@ -1,3 +1,8 @@ -get_random in mcaptcha::api::v1::mcaptcha - Rust

Function mcaptcha::api::v1::mcaptcha::get_random[][src]

pub fn get_random(len: usize) -> String
- +get_random in mcaptcha::api::v1::mcaptcha - Rust + +
pub fn get_random(len: usize) -> String
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/fn.services.html b/mcaptcha/api/v1/mcaptcha/fn.services.html index 8867f043..32c86646 100644 --- a/mcaptcha/api/v1/mcaptcha/fn.services.html +++ b/mcaptcha/api/v1/mcaptcha/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::mcaptcha - Rust

Function mcaptcha::api::v1::mcaptcha::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::mcaptcha - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/index.html b/mcaptcha/api/v1/mcaptcha/get/index.html index 75b181d3..b70d5ded 100644 --- a/mcaptcha/api/v1/mcaptcha/get/index.html +++ b/mcaptcha/api/v1/mcaptcha/get/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::mcaptcha::get - Rust

Module mcaptcha::api::v1::mcaptcha::get[][src]

Modules

-

Structs

-
- +mcaptcha::api::v1::mcaptcha::get - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/runner/fn.get_captcha.html b/mcaptcha/api/v1/mcaptcha/get/runner/fn.get_captcha.html index 1cdb790d..7bbe5962 100644 --- a/mcaptcha/api/v1/mcaptcha/get/runner/fn.get_captcha.html +++ b/mcaptcha/api/v1/mcaptcha/get/runner/fn.get_captcha.html @@ -1,3 +1,8 @@ -get_captcha in mcaptcha::api::v1::mcaptcha::get::runner - Rust

Function mcaptcha::api::v1::mcaptcha::get::runner::get_captcha[][src]

pub async fn get_captcha(
    key: &str,
    username: &str,
    data: &AppData
) -> Result<Vec<I32Levels>, ServiceError>
- +get_captcha in mcaptcha::api::v1::mcaptcha::get::runner - Rust + +
pub async fn get_captcha(
    key: &str,
    username: &str,
    data: &AppData
) -> Result<Vec<I32Levels>, ServiceError>
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/runner/index.html b/mcaptcha/api/v1/mcaptcha/get/runner/index.html index 74219cc1..ea253312 100644 --- a/mcaptcha/api/v1/mcaptcha/get/runner/index.html +++ b/mcaptcha/api/v1/mcaptcha/get/runner/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::mcaptcha::get::runner - Rust

Module mcaptcha::api::v1::mcaptcha::get::runner[][src]

Functions

-
- +mcaptcha::api::v1::mcaptcha::get::runner - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/struct.I32Levels.html b/mcaptcha/api/v1/mcaptcha/get/struct.I32Levels.html index 2aaf824f..0b3ccecd 100644 --- a/mcaptcha/api/v1/mcaptcha/get/struct.I32Levels.html +++ b/mcaptcha/api/v1/mcaptcha/get/struct.I32Levels.html @@ -1,33 +1,39 @@ -I32Levels in mcaptcha::api::v1::mcaptcha::get - Rust

Struct mcaptcha::api::v1::mcaptcha::get::I32Levels[][src]

pub struct I32Levels {
-    pub difficulty_factor: i32,
-    pub visitor_threshold: i32,
-}

Fields

difficulty_factor: i32visitor_threshold: i32

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +I32Levels in mcaptcha::api::v1::mcaptcha::get - Rust + +
pub struct I32Levels {
+    pub difficulty_factor: i32,
+    pub visitor_threshold: i32,
+}

Fields

difficulty_factor: i32visitor_threshold: i32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/struct.Levels.html b/mcaptcha/api/v1/mcaptcha/get/struct.Levels.html index 740a6b62..e2f2e5e1 100644 --- a/mcaptcha/api/v1/mcaptcha/get/struct.Levels.html +++ b/mcaptcha/api/v1/mcaptcha/get/struct.Levels.html @@ -1,32 +1,38 @@ -Levels in mcaptcha::api::v1::mcaptcha::get - Rust

Struct mcaptcha::api::v1::mcaptcha::get::Levels[][src]

pub struct Levels {
+Levels in mcaptcha::api::v1::mcaptcha::get - Rust
+    
+    
pub struct Levels {
     levels: I32Levels,
-}

Fields

levels: I32Levels

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Fields

levels: I32Levels

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/struct.get_captcha.html b/mcaptcha/api/v1/mcaptcha/get/struct.get_captcha.html index 1f42b0a0..7d0df75a 100644 --- a/mcaptcha/api/v1/mcaptcha/get/struct.get_captcha.html +++ b/mcaptcha/api/v1/mcaptcha/get/struct.get_captcha.html @@ -1,21 +1,28 @@ -get_captcha in mcaptcha::api::v1::mcaptcha::get - Rust

Struct mcaptcha::api::v1::mcaptcha::get::get_captcha[][src]

pub struct get_captcha;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +get_captcha in mcaptcha::api::v1::mcaptcha::get - Rust + +
pub struct get_captcha;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/index.html b/mcaptcha/api/v1/mcaptcha/index.html index a7f630a4..03d2e5b2 100644 --- a/mcaptcha/api/v1/mcaptcha/index.html +++ b/mcaptcha/api/v1/mcaptcha/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::mcaptcha - Rust

Module mcaptcha::api::v1::mcaptcha[][src]

Modules

-

Functions

-
- +mcaptcha::api::v1::mcaptcha - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/routes/index.html b/mcaptcha/api/v1/mcaptcha/routes/index.html index cc3721fb..8a8858fd 100644 --- a/mcaptcha/api/v1/mcaptcha/routes/index.html +++ b/mcaptcha/api/v1/mcaptcha/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::mcaptcha::routes - Rust

Module mcaptcha::api::v1::mcaptcha::routes[][src]

Structs

-
- +mcaptcha::api::v1::mcaptcha::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/routes/struct.Captcha.html b/mcaptcha/api/v1/mcaptcha/routes/struct.Captcha.html index e3d3c155..502b8c98 100644 --- a/mcaptcha/api/v1/mcaptcha/routes/struct.Captcha.html +++ b/mcaptcha/api/v1/mcaptcha/routes/struct.Captcha.html @@ -1,29 +1,36 @@ -Captcha in mcaptcha::api::v1::mcaptcha::routes - Rust

Struct mcaptcha::api::v1::mcaptcha::routes::Captcha[][src]

pub struct Captcha {
-    pub create: &'static str,
-    pub update: &'static str,
-    pub get: &'static str,
-    pub delete: &'static str,
-    pub update_key: &'static str,
+Captcha in mcaptcha::api::v1::mcaptcha::routes - Rust
+    
+    
pub struct Captcha {
+    pub create: &'static str,
+    pub update: &'static str,
+    pub get: &'static str,
+    pub delete: &'static str,
+    pub update_key: &'static str,
     pub easy: Easy,
     pub stats: Stats,
-}

Fields

create: &'static strupdate: &'static strget: &'static strdelete: &'static strupdate_key: &'static streasy: Easystats: Stats

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Fields

create: &'static strupdate: &'static strget: &'static strdelete: &'static strupdate_key: &'static streasy: Easystats: Stats

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/stats/index.html b/mcaptcha/api/v1/mcaptcha/stats/index.html index e6ef8d79..e5f97f83 100644 --- a/mcaptcha/api/v1/mcaptcha/stats/index.html +++ b/mcaptcha/api/v1/mcaptcha/stats/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::mcaptcha::stats - Rust

Module mcaptcha::api::v1::mcaptcha::stats[][src]

Modules

-

Structs

-
- +mcaptcha::api::v1::mcaptcha::stats - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/stats/routes/index.html b/mcaptcha/api/v1/mcaptcha/stats/routes/index.html index 502d4ad4..fa60e3bf 100644 --- a/mcaptcha/api/v1/mcaptcha/stats/routes/index.html +++ b/mcaptcha/api/v1/mcaptcha/stats/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::mcaptcha::stats::routes - Rust

Module mcaptcha::api::v1::mcaptcha::stats::routes[][src]

Structs

-
- +mcaptcha::api::v1::mcaptcha::stats::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/stats/routes/struct.Stats.html b/mcaptcha/api/v1/mcaptcha/stats/routes/struct.Stats.html index 6f4e0db7..60e76483 100644 --- a/mcaptcha/api/v1/mcaptcha/stats/routes/struct.Stats.html +++ b/mcaptcha/api/v1/mcaptcha/stats/routes/struct.Stats.html @@ -1,23 +1,30 @@ -Stats in mcaptcha::api::v1::mcaptcha::stats::routes - Rust

Struct mcaptcha::api::v1::mcaptcha::stats::routes::Stats[][src]

pub struct Stats {
-    pub get: &'static str,
-}

Fields

get: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Stats in mcaptcha::api::v1::mcaptcha::stats::routes - Rust + +
pub struct Stats {
+    pub get: &'static str,
+}

Fields

get: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/stats/struct.StatsPayload.html b/mcaptcha/api/v1/mcaptcha/stats/struct.StatsPayload.html index 9491b6a3..c238a191 100644 --- a/mcaptcha/api/v1/mcaptcha/stats/struct.StatsPayload.html +++ b/mcaptcha/api/v1/mcaptcha/stats/struct.StatsPayload.html @@ -1,32 +1,38 @@ -StatsPayload in mcaptcha::api::v1::mcaptcha::stats - Rust

Struct mcaptcha::api::v1::mcaptcha::stats::StatsPayload[][src]

pub struct StatsPayload {
-    pub key: String,
-}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +StatsPayload in mcaptcha::api::v1::mcaptcha::stats - Rust + +
pub struct StatsPayload {
+    pub key: String,
+}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/stats/struct.get.html b/mcaptcha/api/v1/mcaptcha/stats/struct.get.html index 2dcf4f13..21f9914b 100644 --- a/mcaptcha/api/v1/mcaptcha/stats/struct.get.html +++ b/mcaptcha/api/v1/mcaptcha/stats/struct.get.html @@ -1,21 +1,28 @@ -get in mcaptcha::api::v1::mcaptcha::stats - Rust

Struct mcaptcha::api::v1::mcaptcha::stats::get[][src]

pub struct get;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +get in mcaptcha::api::v1::mcaptcha::stats - Rust + +
pub struct get;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/index.html b/mcaptcha/api/v1/mcaptcha/update/index.html index 13f39b42..02fcc701 100644 --- a/mcaptcha/api/v1/mcaptcha/update/index.html +++ b/mcaptcha/api/v1/mcaptcha/update/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::mcaptcha::update - Rust

Module mcaptcha::api::v1::mcaptcha::update[][src]

Modules

-

Structs

-
- +mcaptcha::api::v1::mcaptcha::update - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_captcha.html b/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_captcha.html index 43fd0fc8..bc09f125 100644 --- a/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_captcha.html +++ b/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_captcha.html @@ -1,3 +1,8 @@ -update_captcha in mcaptcha::api::v1::mcaptcha::update::runner - Rust

Function mcaptcha::api::v1::mcaptcha::update::runner::update_captcha[][src]

pub async fn update_captcha(
    payload: &UpdateCaptcha,
    data: &AppData,
    username: &str
) -> Result<(), ServiceError>
- +update_captcha in mcaptcha::api::v1::mcaptcha::update::runner - Rust + +
pub async fn update_captcha(
    payload: &UpdateCaptcha,
    data: &AppData,
    username: &str
) -> Result<(), ServiceError>
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_key.html b/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_key.html index 6adcd40b..d9719bf8 100644 --- a/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_key.html +++ b/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_key.html @@ -1,3 +1,8 @@ -update_key in mcaptcha::api::v1::mcaptcha::update::runner - Rust

Function mcaptcha::api::v1::mcaptcha::update::runner::update_key[][src]

pub async fn update_key(
    key: &str,
    old_key: &str,
    username: &str,
    data: &AppData
) -> Result<(), Error>
- +update_key in mcaptcha::api::v1::mcaptcha::update::runner - Rust + +
pub async fn update_key(
    key: &str,
    old_key: &str,
    username: &str,
    data: &AppData
) -> Result<(), Error>
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/runner/index.html b/mcaptcha/api/v1/mcaptcha/update/runner/index.html index 1062c29e..437fafde 100644 --- a/mcaptcha/api/v1/mcaptcha/update/runner/index.html +++ b/mcaptcha/api/v1/mcaptcha/update/runner/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::mcaptcha::update::runner - Rust

Module mcaptcha::api::v1::mcaptcha::update::runner[][src]

Functions

-
- +mcaptcha::api::v1::mcaptcha::update::runner - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/struct.UpdateCaptcha.html b/mcaptcha/api/v1/mcaptcha/update/struct.UpdateCaptcha.html index c11c4c63..a509c2f5 100644 --- a/mcaptcha/api/v1/mcaptcha/update/struct.UpdateCaptcha.html +++ b/mcaptcha/api/v1/mcaptcha/update/struct.UpdateCaptcha.html @@ -1,28 +1,35 @@ -UpdateCaptcha in mcaptcha::api::v1::mcaptcha::update - Rust

Struct mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha[][src]

pub struct UpdateCaptcha {
-    pub levels: Vec<Level>,
-    pub duration: u32,
-    pub description: String,
-    pub key: String,
-}

Fields

levels: Vec<Level>duration: u32description: Stringkey: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +UpdateCaptcha in mcaptcha::api::v1::mcaptcha::update - Rust + +
pub struct UpdateCaptcha {
+    pub levels: Vec<Level>,
+    pub duration: u32,
+    pub description: String,
+    pub key: String,
+}

Fields

levels: Vec<Level>duration: u32description: Stringkey: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/struct.update_captcha.html b/mcaptcha/api/v1/mcaptcha/update/struct.update_captcha.html index 02abe93b..a8f0ecbc 100644 --- a/mcaptcha/api/v1/mcaptcha/update/struct.update_captcha.html +++ b/mcaptcha/api/v1/mcaptcha/update/struct.update_captcha.html @@ -1,21 +1,28 @@ -update_captcha in mcaptcha::api::v1::mcaptcha::update - Rust

Struct mcaptcha::api::v1::mcaptcha::update::update_captcha[][src]

pub struct update_captcha;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +update_captcha in mcaptcha::api::v1::mcaptcha::update - Rust + +
pub struct update_captcha;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/struct.update_key.html b/mcaptcha/api/v1/mcaptcha/update/struct.update_key.html index 950e05a2..44811254 100644 --- a/mcaptcha/api/v1/mcaptcha/update/struct.update_key.html +++ b/mcaptcha/api/v1/mcaptcha/update/struct.update_key.html @@ -1,21 +1,28 @@ -update_key in mcaptcha::api::v1::mcaptcha::update - Rust

Struct mcaptcha::api::v1::mcaptcha::update::update_key[][src]

pub struct update_key;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +update_key in mcaptcha::api::v1::mcaptcha::update - Rust + +
pub struct update_key;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/enum.BuildDetailsBuilderError.html b/mcaptcha/api/v1/meta/enum.BuildDetailsBuilderError.html index 0e4b7f1e..e8cb4f37 100644 --- a/mcaptcha/api/v1/meta/enum.BuildDetailsBuilderError.html +++ b/mcaptcha/api/v1/meta/enum.BuildDetailsBuilderError.html @@ -1,37 +1,44 @@ -BuildDetailsBuilderError in mcaptcha::api::v1::meta - Rust

Enum mcaptcha::api::v1::meta::BuildDetailsBuilderError[][src]

#[non_exhaustive]
+BuildDetailsBuilderError in mcaptcha::api::v1::meta - Rust
+    
+    
#[non_exhaustive]
 pub enum BuildDetailsBuilderError {
-    UninitializedField(&'static str),
-    ValidationError(String),
+    UninitializedField(&'static str),
+    ValidationError(String),
 }
Expand description

Error type for BuildDetailsBuilder

-

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
UninitializedField(&'static str)

Uninitialized field

-

Tuple Fields of UninitializedField

0: &'static str
ValidationError(String)

Custom validation error

-

Tuple Fields of ValidationError

0: String

Trait Implementations

Formats the value using the given formatter. Read more

-

Formats the value using the given formatter. Read more

-

The lower-level source of this error, if any. Read more

-
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

-
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

-
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

-

Performs the conversion.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

Converts the given value to a String. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.

UninitializedField(&'static str)

Uninitialized field

+

ValidationError(String)

Custom validation error

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

The lower-level source of this error, if any. Read more

+
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

+
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

+
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

+

Performs the conversion.

+

Performs the conversion.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

Converts the given value to a String. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/enum.HealthBuilderError.html b/mcaptcha/api/v1/meta/enum.HealthBuilderError.html index 06d40c95..185f2c51 100644 --- a/mcaptcha/api/v1/meta/enum.HealthBuilderError.html +++ b/mcaptcha/api/v1/meta/enum.HealthBuilderError.html @@ -1,37 +1,44 @@ -HealthBuilderError in mcaptcha::api::v1::meta - Rust

Enum mcaptcha::api::v1::meta::HealthBuilderError[][src]

#[non_exhaustive]
+HealthBuilderError in mcaptcha::api::v1::meta - Rust
+    
+    
#[non_exhaustive]
 pub enum HealthBuilderError {
-    UninitializedField(&'static str),
-    ValidationError(String),
+    UninitializedField(&'static str),
+    ValidationError(String),
 }
Expand description

Error type for HealthBuilder

-

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
UninitializedField(&'static str)

Uninitialized field

-

Tuple Fields of UninitializedField

0: &'static str
ValidationError(String)

Custom validation error

-

Tuple Fields of ValidationError

0: String

Trait Implementations

Formats the value using the given formatter. Read more

-

Formats the value using the given formatter. Read more

-

The lower-level source of this error, if any. Read more

-
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

-
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

-
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

-

Performs the conversion.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

Converts the given value to a String. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.

UninitializedField(&'static str)

Uninitialized field

+

ValidationError(String)

Custom validation error

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

The lower-level source of this error, if any. Read more

+
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

+
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

+
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

+

Performs the conversion.

+

Performs the conversion.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

Converts the given value to a String. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/fn.services.html b/mcaptcha/api/v1/meta/fn.services.html index 2d7598bf..5a43fa3a 100644 --- a/mcaptcha/api/v1/meta/fn.services.html +++ b/mcaptcha/api/v1/meta/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::meta - Rust

Function mcaptcha::api::v1::meta::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::meta - Rust + +
+

Function mcaptcha::api::v1::meta::services

source · []
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/index.html b/mcaptcha/api/v1/meta/index.html index 9d37b4e3..acd486db 100644 --- a/mcaptcha/api/v1/meta/index.html +++ b/mcaptcha/api/v1/meta/index.html @@ -1,14 +1,19 @@ -mcaptcha::api::v1::meta - Rust

Module mcaptcha::api::v1::meta[][src]

Modules

-

Structs

+mcaptcha::api::v1::meta - Rust + +
+

Module mcaptcha::api::v1::meta

source · []

Modules

+

Structs

Health check return datatype

Builder for Health.

emmits build details of the bninary

checks all components of the system

-

Enums

+

Enums

Error type for BuildDetailsBuilder

Error type for HealthBuilder

-

Functions

-
- +

Functions

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/routes/index.html b/mcaptcha/api/v1/meta/routes/index.html index 61dc254f..ae5b4fd7 100644 --- a/mcaptcha/api/v1/meta/routes/index.html +++ b/mcaptcha/api/v1/meta/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::meta::routes - Rust

Module mcaptcha::api::v1::meta::routes[][src]

Structs

-
- +mcaptcha::api::v1::meta::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/routes/struct.Meta.html b/mcaptcha/api/v1/meta/routes/struct.Meta.html index b4e3a008..79c79117 100644 --- a/mcaptcha/api/v1/meta/routes/struct.Meta.html +++ b/mcaptcha/api/v1/meta/routes/struct.Meta.html @@ -1,24 +1,31 @@ -Meta in mcaptcha::api::v1::meta::routes - Rust

Struct mcaptcha::api::v1::meta::routes::Meta[][src]

pub struct Meta {
-    pub build_details: &'static str,
-    pub health: &'static str,
-}

Fields

build_details: &'static strhealth: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Meta in mcaptcha::api::v1::meta::routes - Rust + +
pub struct Meta {
+    pub build_details: &'static str,
+    pub health: &'static str,
+}

Fields

build_details: &'static strhealth: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/struct.BuildDetails.html b/mcaptcha/api/v1/meta/struct.BuildDetails.html index f151b8a0..fd0ea858 100644 --- a/mcaptcha/api/v1/meta/struct.BuildDetails.html +++ b/mcaptcha/api/v1/meta/struct.BuildDetails.html @@ -1,33 +1,39 @@ -BuildDetails in mcaptcha::api::v1::meta - Rust

Struct mcaptcha::api::v1::meta::BuildDetails[][src]

pub struct BuildDetails {
-    pub version: &'static str,
-    pub git_commit_hash: &'static str,
-}

Fields

version: &'static strgit_commit_hash: &'static str

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +BuildDetails in mcaptcha::api::v1::meta - Rust + +
pub struct BuildDetails {
+    pub version: &'static str,
+    pub git_commit_hash: &'static str,
+}

Fields

version: &'static strgit_commit_hash: &'static str

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/struct.BuildDetailsBuilder.html b/mcaptcha/api/v1/meta/struct.BuildDetailsBuilder.html index 14cff52e..b5306374 100644 --- a/mcaptcha/api/v1/meta/struct.BuildDetailsBuilder.html +++ b/mcaptcha/api/v1/meta/struct.BuildDetailsBuilder.html @@ -1,35 +1,42 @@ -BuildDetailsBuilder in mcaptcha::api::v1::meta - Rust

Struct mcaptcha::api::v1::meta::BuildDetailsBuilder[][src]

pub struct BuildDetailsBuilder {
-    version: Option<&'static str>,
-    git_commit_hash: Option<&'static str>,
+BuildDetailsBuilder in mcaptcha::api::v1::meta - Rust
+    
+    
pub struct BuildDetailsBuilder {
+    version: Option<&'static str>,
+    git_commit_hash: Option<&'static str>,
 }
Expand description

Builder for BuildDetails.

-

Fields

version: Option<&'static str>git_commit_hash: Option<&'static str>

Implementations

Builds a new BuildDetails.

-
Errors
+

Fields

version: Option<&'static str>git_commit_hash: Option<&'static str>

Implementations

Builds a new BuildDetails.

+
Errors

If a required field has not been initialized.

-

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Returns the “default value” for a type. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Create an empty builder, with all fields set to None or PhantomData.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Returns the “default value” for a type. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/struct.Health.html b/mcaptcha/api/v1/meta/struct.Health.html index 9b631506..0097c51a 100644 --- a/mcaptcha/api/v1/meta/struct.Health.html +++ b/mcaptcha/api/v1/meta/struct.Health.html @@ -1,34 +1,40 @@ -Health in mcaptcha::api::v1::meta - Rust

Struct mcaptcha::api::v1::meta::Health[][src]

pub struct Health {
-    db: bool,
-    redis: Option<bool>,
+Health in mcaptcha::api::v1::meta - Rust
+    
+    
pub struct Health {
+    db: bool,
+    redis: Option<bool>,
 }
Expand description

Health check return datatype

-

Fields

db: boolredis: Option<bool>

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Fields

db: boolredis: Option<bool>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/struct.HealthBuilder.html b/mcaptcha/api/v1/meta/struct.HealthBuilder.html index 9f1d4c75..50df0ef1 100644 --- a/mcaptcha/api/v1/meta/struct.HealthBuilder.html +++ b/mcaptcha/api/v1/meta/struct.HealthBuilder.html @@ -1,35 +1,42 @@ -HealthBuilder in mcaptcha::api::v1::meta - Rust

Struct mcaptcha::api::v1::meta::HealthBuilder[][src]

pub struct HealthBuilder {
-    db: Option<bool>,
-    redis: Option<Option<bool>>,
+HealthBuilder in mcaptcha::api::v1::meta - Rust
+    
+    
pub struct HealthBuilder {
+    db: Option<bool>,
+    redis: Option<Option<bool>>,
 }
Expand description

Builder for Health.

-

Fields

db: Option<bool>redis: Option<Option<bool>>

Implementations

Builds a new Health.

-
Errors
+

Fields

db: Option<bool>redis: Option<Option<bool>>

Implementations

Builds a new Health.

+
Errors

If a required field has not been initialized.

-

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Returns the “default value” for a type. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Create an empty builder, with all fields set to None or PhantomData.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Returns the “default value” for a type. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/struct.build_details.html b/mcaptcha/api/v1/meta/struct.build_details.html index de0e2873..a4d5829c 100644 --- a/mcaptcha/api/v1/meta/struct.build_details.html +++ b/mcaptcha/api/v1/meta/struct.build_details.html @@ -1,22 +1,29 @@ -build_details in mcaptcha::api::v1::meta - Rust

Struct mcaptcha::api::v1::meta::build_details[][src]

pub struct build_details;
Expand description

emmits build details of the bninary

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +build_details in mcaptcha::api::v1::meta - Rust + +
pub struct build_details;
Expand description

emmits build details of the bninary

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/meta/struct.health.html b/mcaptcha/api/v1/meta/struct.health.html index 957aadf9..a6049908 100644 --- a/mcaptcha/api/v1/meta/struct.health.html +++ b/mcaptcha/api/v1/meta/struct.health.html @@ -1,22 +1,29 @@ -health in mcaptcha::api::v1::meta - Rust

Struct mcaptcha::api::v1::meta::health[][src]

pub struct health;
Expand description

checks all components of the system

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +health in mcaptcha::api::v1::meta - Rust + +
pub struct health;
Expand description

checks all components of the system

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/add/index.html b/mcaptcha/api/v1/notifications/add/index.html index d5e686b7..55d08761 100644 --- a/mcaptcha/api/v1/notifications/add/index.html +++ b/mcaptcha/api/v1/notifications/add/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::notifications::add - Rust

Module mcaptcha::api::v1::notifications::add[][src]

Structs

+mcaptcha::api::v1::notifications::add - Rust + +

Structs

route handler that adds a notification message

-
- +
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/add/struct.AddNotification.html b/mcaptcha/api/v1/notifications/add/struct.AddNotification.html index ff10e1ce..ddfe8b04 100644 --- a/mcaptcha/api/v1/notifications/add/struct.AddNotification.html +++ b/mcaptcha/api/v1/notifications/add/struct.AddNotification.html @@ -1,27 +1,34 @@ -AddNotification in mcaptcha::api::v1::notifications::add - Rust

Struct mcaptcha::api::v1::notifications::add::AddNotification[][src]

pub struct AddNotification {
-    pub to: String,
-    pub heading: String,
-    pub message: String,
-}

Fields

to: Stringheading: Stringmessage: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +AddNotification in mcaptcha::api::v1::notifications::add - Rust + +
pub struct AddNotification {
+    pub to: String,
+    pub heading: String,
+    pub message: String,
+}

Fields

to: Stringheading: Stringmessage: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/add/struct.add_notification.html b/mcaptcha/api/v1/notifications/add/struct.add_notification.html index d974369f..03cb4aed 100644 --- a/mcaptcha/api/v1/notifications/add/struct.add_notification.html +++ b/mcaptcha/api/v1/notifications/add/struct.add_notification.html @@ -1,22 +1,29 @@ -add_notification in mcaptcha::api::v1::notifications::add - Rust

Struct mcaptcha::api::v1::notifications::add::add_notification[][src]

pub struct add_notification;
Expand description

route handler that adds a notification message

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +add_notification in mcaptcha::api::v1::notifications::add - Rust + +
pub struct add_notification;
Expand description

route handler that adds a notification message

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/fn.services.html b/mcaptcha/api/v1/notifications/fn.services.html index 8ffdaf8a..559f612b 100644 --- a/mcaptcha/api/v1/notifications/fn.services.html +++ b/mcaptcha/api/v1/notifications/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::notifications - Rust

Function mcaptcha::api::v1::notifications::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::notifications - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/get/index.html b/mcaptcha/api/v1/notifications/get/index.html index dd77f0d1..c01635f4 100644 --- a/mcaptcha/api/v1/notifications/get/index.html +++ b/mcaptcha/api/v1/notifications/get/index.html @@ -1,6 +1,11 @@ -mcaptcha::api::v1::notifications::get - Rust

Module mcaptcha::api::v1::notifications::get[][src]

Modules

-

Structs

+mcaptcha::api::v1::notifications::get - Rust + +

Modules

+

Structs

route handler that gets all unread notifications

-
- +
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/get/runner/fn.get_notification.html b/mcaptcha/api/v1/notifications/get/runner/fn.get_notification.html index fb039806..1d5e1f56 100644 --- a/mcaptcha/api/v1/notifications/get/runner/fn.get_notification.html +++ b/mcaptcha/api/v1/notifications/get/runner/fn.get_notification.html @@ -1,3 +1,8 @@ -get_notification in mcaptcha::api::v1::notifications::get::runner - Rust

Function mcaptcha::api::v1::notifications::get::runner::get_notification[][src]

pub async fn get_notification(
    data: &AppData,
    receiver: &str
) -> Result<Vec<Notification>, ServiceError>
- +get_notification in mcaptcha::api::v1::notifications::get::runner - Rust + +
pub async fn get_notification(
    data: &AppData,
    receiver: &str
) -> Result<Vec<Notification>, ServiceError>
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/get/runner/index.html b/mcaptcha/api/v1/notifications/get/runner/index.html index 938407ae..b6c0c618 100644 --- a/mcaptcha/api/v1/notifications/get/runner/index.html +++ b/mcaptcha/api/v1/notifications/get/runner/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::notifications::get::runner - Rust

Module mcaptcha::api::v1::notifications::get::runner[][src]

Functions

-
- +mcaptcha::api::v1::notifications::get::runner - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/get/struct.Notification.html b/mcaptcha/api/v1/notifications/get/struct.Notification.html index 97d52af2..2341bc1b 100644 --- a/mcaptcha/api/v1/notifications/get/struct.Notification.html +++ b/mcaptcha/api/v1/notifications/get/struct.Notification.html @@ -1,29 +1,36 @@ -Notification in mcaptcha::api::v1::notifications::get - Rust

Struct mcaptcha::api::v1::notifications::get::Notification[][src]

pub struct Notification {
-    pub name: Option<String>,
-    pub heading: Option<String>,
-    pub message: Option<String>,
-    pub received: Option<OffsetDateTime>,
-    pub id: Option<i32>,
-}

Fields

name: Option<String>heading: Option<String>message: Option<String>received: Option<OffsetDateTime>id: Option<i32>

Trait Implementations

Performs the conversion.

-

Performs the conversion.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Notification in mcaptcha::api::v1::notifications::get - Rust + +
pub struct Notification {
+    pub name: Option<String>,
+    pub heading: Option<String>,
+    pub message: Option<String>,
+    pub received: Option<OffsetDateTime>,
+    pub id: Option<i32>,
+}

Fields

name: Option<String>heading: Option<String>message: Option<String>received: Option<OffsetDateTime>id: Option<i32>

Trait Implementations

Performs the conversion.

+

Performs the conversion.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/get/struct.NotificationResp.html b/mcaptcha/api/v1/notifications/get/struct.NotificationResp.html index ecfd461c..ecc4925f 100644 --- a/mcaptcha/api/v1/notifications/get/struct.NotificationResp.html +++ b/mcaptcha/api/v1/notifications/get/struct.NotificationResp.html @@ -1,30 +1,37 @@ -NotificationResp in mcaptcha::api::v1::notifications::get - Rust

Struct mcaptcha::api::v1::notifications::get::NotificationResp[][src]

pub struct NotificationResp {
-    pub name: String,
-    pub heading: String,
-    pub message: String,
-    pub received: i64,
-    pub id: i32,
-}

Fields

name: Stringheading: Stringmessage: Stringreceived: i64id: i32

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Performs the conversion.

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +NotificationResp in mcaptcha::api::v1::notifications::get - Rust + +
pub struct NotificationResp {
+    pub name: String,
+    pub heading: String,
+    pub message: String,
+    pub received: i64,
+    pub id: i32,
+}

Fields

name: Stringheading: Stringmessage: Stringreceived: i64id: i32

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Performs the conversion.

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/get/struct.get_notification.html b/mcaptcha/api/v1/notifications/get/struct.get_notification.html index eeaa4015..7b7ca33f 100644 --- a/mcaptcha/api/v1/notifications/get/struct.get_notification.html +++ b/mcaptcha/api/v1/notifications/get/struct.get_notification.html @@ -1,22 +1,29 @@ -get_notification in mcaptcha::api::v1::notifications::get - Rust

Struct mcaptcha::api::v1::notifications::get::get_notification[][src]

pub struct get_notification;
Expand description

route handler that gets all unread notifications

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +get_notification in mcaptcha::api::v1::notifications::get - Rust + +
pub struct get_notification;
Expand description

route handler that gets all unread notifications

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/index.html b/mcaptcha/api/v1/notifications/index.html index f6e5f4c2..2fa090d1 100644 --- a/mcaptcha/api/v1/notifications/index.html +++ b/mcaptcha/api/v1/notifications/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::notifications - Rust

Module mcaptcha::api::v1::notifications[][src]

Modules

-

Functions

-
- +mcaptcha::api::v1::notifications - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/mark_read/index.html b/mcaptcha/api/v1/notifications/mark_read/index.html index 62f8130c..63e37f1e 100644 --- a/mcaptcha/api/v1/notifications/mark_read/index.html +++ b/mcaptcha/api/v1/notifications/mark_read/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::notifications::mark_read - Rust

Module mcaptcha::api::v1::notifications::mark_read[][src]

Structs

+mcaptcha::api::v1::notifications::mark_read - Rust + +

Structs

route handler that marks a notification read

-
- +
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/mark_read/struct.MarkReadReq.html b/mcaptcha/api/v1/notifications/mark_read/struct.MarkReadReq.html index 10138c6d..9052a65e 100644 --- a/mcaptcha/api/v1/notifications/mark_read/struct.MarkReadReq.html +++ b/mcaptcha/api/v1/notifications/mark_read/struct.MarkReadReq.html @@ -1,25 +1,32 @@ -MarkReadReq in mcaptcha::api::v1::notifications::mark_read - Rust

Struct mcaptcha::api::v1::notifications::mark_read::MarkReadReq[][src]

pub struct MarkReadReq {
-    pub id: i32,
-}

Fields

id: i32

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +MarkReadReq in mcaptcha::api::v1::notifications::mark_read - Rust + +
pub struct MarkReadReq {
+    pub id: i32,
+}

Fields

id: i32

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/mark_read/struct.NotificationResp.html b/mcaptcha/api/v1/notifications/mark_read/struct.NotificationResp.html index e8b1a788..287b5b87 100644 --- a/mcaptcha/api/v1/notifications/mark_read/struct.NotificationResp.html +++ b/mcaptcha/api/v1/notifications/mark_read/struct.NotificationResp.html @@ -1,29 +1,36 @@ -NotificationResp in mcaptcha::api::v1::notifications::mark_read - Rust

Struct mcaptcha::api::v1::notifications::mark_read::NotificationResp[][src]

pub struct NotificationResp {
-    pub name: String,
-    pub heading: String,
-    pub message: String,
-    pub received: i64,
-    pub id: i32,
-}

Fields

name: Stringheading: Stringmessage: Stringreceived: i64id: i32

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +NotificationResp in mcaptcha::api::v1::notifications::mark_read - Rust + +
pub struct NotificationResp {
+    pub name: String,
+    pub heading: String,
+    pub message: String,
+    pub received: i64,
+    pub id: i32,
+}

Fields

name: Stringheading: Stringmessage: Stringreceived: i64id: i32

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/mark_read/struct.mark_read.html b/mcaptcha/api/v1/notifications/mark_read/struct.mark_read.html index ec077b76..fdd93c90 100644 --- a/mcaptcha/api/v1/notifications/mark_read/struct.mark_read.html +++ b/mcaptcha/api/v1/notifications/mark_read/struct.mark_read.html @@ -1,22 +1,29 @@ -mark_read in mcaptcha::api::v1::notifications::mark_read - Rust

Struct mcaptcha::api::v1::notifications::mark_read::mark_read[][src]

pub struct mark_read;
Expand description

route handler that marks a notification read

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +mark_read in mcaptcha::api::v1::notifications::mark_read - Rust + +
pub struct mark_read;
Expand description

route handler that marks a notification read

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/routes/index.html b/mcaptcha/api/v1/notifications/routes/index.html index 29d6856f..2b8c3f34 100644 --- a/mcaptcha/api/v1/notifications/routes/index.html +++ b/mcaptcha/api/v1/notifications/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::api::v1::notifications::routes - Rust

Module mcaptcha::api::v1::notifications::routes[][src]

Structs

-
- +mcaptcha::api::v1::notifications::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/notifications/routes/struct.Notifications.html b/mcaptcha/api/v1/notifications/routes/struct.Notifications.html index 60118d9d..133ff933 100644 --- a/mcaptcha/api/v1/notifications/routes/struct.Notifications.html +++ b/mcaptcha/api/v1/notifications/routes/struct.Notifications.html @@ -1,25 +1,32 @@ -Notifications in mcaptcha::api::v1::notifications::routes - Rust

Struct mcaptcha::api::v1::notifications::routes::Notifications[][src]

pub struct Notifications {
-    pub add: &'static str,
-    pub mark_read: &'static str,
-    pub get: &'static str,
-}

Fields

add: &'static strmark_read: &'static strget: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Notifications in mcaptcha::api::v1::notifications::routes - Rust + +
pub struct Notifications {
+    pub add: &'static str,
+    pub mark_read: &'static str,
+    pub get: &'static str,
+}

Fields

add: &'static strmark_read: &'static strget: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/fn.services.html b/mcaptcha/api/v1/pow/fn.services.html index cde711c9..604baff6 100644 --- a/mcaptcha/api/v1/pow/fn.services.html +++ b/mcaptcha/api/v1/pow/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::api::v1::pow - Rust

Function mcaptcha::api::v1::pow::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::api::v1::pow - Rust + +
+

Function mcaptcha::api::v1::pow::services

source · []
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/get_config/fn.init_mcaptcha.html b/mcaptcha/api/v1/pow/get_config/fn.init_mcaptcha.html index e35d8e32..82ead6a6 100644 --- a/mcaptcha/api/v1/pow/get_config/fn.init_mcaptcha.html +++ b/mcaptcha/api/v1/pow/get_config/fn.init_mcaptcha.html @@ -1,6 +1,11 @@ -init_mcaptcha in mcaptcha::api::v1::pow::get_config - Rust

Function mcaptcha::api::v1::pow::get_config::init_mcaptcha[][src]

async fn init_mcaptcha(data: &AppData, key: &str) -> Result<(), ServiceError>
Expand description

Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.

+init_mcaptcha in mcaptcha::api::v1::pow::get_config - Rust + +
async fn init_mcaptcha(data: &AppData, key: &str) -> Result<(), ServiceError>
Expand description

Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.

This fn gets mcaptcha config from database, builds [Defense][libmcaptcha::Defense], creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]

-
- +
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/get_config/index.html b/mcaptcha/api/v1/pow/get_config/index.html index 916a85a4..5b9efbf8 100644 --- a/mcaptcha/api/v1/pow/get_config/index.html +++ b/mcaptcha/api/v1/pow/get_config/index.html @@ -1,7 +1,12 @@ -mcaptcha::api::v1::pow::get_config - Rust

Module mcaptcha::api::v1::pow::get_config[][src]

Structs

+mcaptcha::api::v1::pow::get_config - Rust + +

Structs

get PoW configuration for an mcaptcha key

-

Functions

+

Functions

Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.

-
- +
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/get_config/struct.GetConfigPayload.html b/mcaptcha/api/v1/pow/get_config/struct.GetConfigPayload.html index 31c28268..354f6c62 100644 --- a/mcaptcha/api/v1/pow/get_config/struct.GetConfigPayload.html +++ b/mcaptcha/api/v1/pow/get_config/struct.GetConfigPayload.html @@ -1,32 +1,38 @@ -GetConfigPayload in mcaptcha::api::v1::pow::get_config - Rust

Struct mcaptcha::api::v1::pow::get_config::GetConfigPayload[][src]

pub struct GetConfigPayload {
-    pub key: String,
-}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +GetConfigPayload in mcaptcha::api::v1::pow::get_config - Rust + +
pub struct GetConfigPayload {
+    pub key: String,
+}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/get_config/struct.get_config.html b/mcaptcha/api/v1/pow/get_config/struct.get_config.html index a34019e2..451ef510 100644 --- a/mcaptcha/api/v1/pow/get_config/struct.get_config.html +++ b/mcaptcha/api/v1/pow/get_config/struct.get_config.html @@ -1,22 +1,29 @@ -get_config in mcaptcha::api::v1::pow::get_config - Rust

Struct mcaptcha::api::v1::pow::get_config::get_config[][src]

pub struct get_config;
Expand description

get PoW configuration for an mcaptcha key

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +get_config in mcaptcha::api::v1::pow::get_config - Rust + +
pub struct get_config;
Expand description

get PoW configuration for an mcaptcha key

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/index.html b/mcaptcha/api/v1/pow/index.html index 24de5967..5189536f 100644 --- a/mcaptcha/api/v1/pow/index.html +++ b/mcaptcha/api/v1/pow/index.html @@ -1,8 +1,13 @@ -mcaptcha::api::v1::pow - Rust

Module mcaptcha::api::v1::pow[][src]

Re-exports

-
pub use super::mcaptcha::get::I32Levels;

Modules

+mcaptcha::api::v1::pow - Rust + +
+

Module mcaptcha::api::v1::pow

source · []

Re-exports

+
pub use super::mcaptcha::get::I32Levels;

Modules

PoW Verification module

PoW success token module

-

Functions

-
- +

Functions

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/routes/index.html b/mcaptcha/api/v1/pow/routes/index.html index ab28dc5f..777710e2 100644 --- a/mcaptcha/api/v1/pow/routes/index.html +++ b/mcaptcha/api/v1/pow/routes/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::pow::routes - Rust

Module mcaptcha::api::v1::pow::routes[][src]

Macros

-

Structs

-
- +mcaptcha::api::v1::pow::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/routes/macro.rm_scope.html b/mcaptcha/api/v1/pow/routes/macro.rm_scope.html index 4b81e5f9..3480b58c 100644 --- a/mcaptcha/api/v1/pow/routes/macro.rm_scope.html +++ b/mcaptcha/api/v1/pow/routes/macro.rm_scope.html @@ -1,6 +1,11 @@ -rm_scope in mcaptcha::api::v1::pow::routes - Rust

Macro mcaptcha::api::v1::pow::routes::rm_scope[][src]

macro_rules! rm_scope {
-    ($name : ident) => { ... };
+rm_scope in mcaptcha::api::v1::pow::routes - Rust
+    
+    
macro_rules! rm_scope {
+    ($name:ident) => { ... };
 }
-
- +
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/routes/struct.PoW.html b/mcaptcha/api/v1/pow/routes/struct.PoW.html index e35e8e35..dd0738fc 100644 --- a/mcaptcha/api/v1/pow/routes/struct.PoW.html +++ b/mcaptcha/api/v1/pow/routes/struct.PoW.html @@ -1,29 +1,36 @@ -PoW in mcaptcha::api::v1::pow::routes - Rust

Struct mcaptcha::api::v1::pow::routes::PoW[][src]

pub struct PoW {
-    pub get_config: &'static str,
-    pub verify_pow: &'static str,
-    pub validate_captcha_token: &'static str,
-    pub scope: &'static str,
-}

Fields

get_config: &'static strverify_pow: &'static strvalidate_captcha_token: &'static strscope: &'static str

Implementations

remove scope for $name route

-

remove scope for $name route

-

remove scope for $name route

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +PoW in mcaptcha::api::v1::pow::routes - Rust + +
+

Struct mcaptcha::api::v1::pow::routes::PoW

source · []
pub struct PoW {
+    pub get_config: &'static str,
+    pub verify_pow: &'static str,
+    pub validate_captcha_token: &'static str,
+    pub scope: &'static str,
+}

Fields

get_config: &'static strverify_pow: &'static strvalidate_captcha_token: &'static strscope: &'static str

Implementations

remove scope for $name route

+

remove scope for $name route

+

remove scope for $name route

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/verify_pow/index.html b/mcaptcha/api/v1/pow/verify_pow/index.html index f96a7958..22d62ace 100644 --- a/mcaptcha/api/v1/pow/verify_pow/index.html +++ b/mcaptcha/api/v1/pow/verify_pow/index.html @@ -1,9 +1,14 @@ -mcaptcha::api::v1::pow::verify_pow - Rust

Module mcaptcha::api::v1::pow::verify_pow[][src]

Expand description

PoW Verification module

-

Structs

+mcaptcha::api::v1::pow::verify_pow - Rust + +
Expand description

PoW Verification module

+

Structs

validation token that clients receive as proof for submiting valid PoW

route handler that verifies PoW and issues a solution token if verification is successful

-
- +
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/verify_pow/struct.ValidationToken.html b/mcaptcha/api/v1/pow/verify_pow/struct.ValidationToken.html index 45685fd0..fa694e46 100644 --- a/mcaptcha/api/v1/pow/verify_pow/struct.ValidationToken.html +++ b/mcaptcha/api/v1/pow/verify_pow/struct.ValidationToken.html @@ -1,34 +1,40 @@ -ValidationToken in mcaptcha::api::v1::pow::verify_pow - Rust

Struct mcaptcha::api::v1::pow::verify_pow::ValidationToken[][src]

pub struct ValidationToken {
-    pub token: String,
+ValidationToken in mcaptcha::api::v1::pow::verify_pow - Rust
+    
+    
pub struct ValidationToken {
+    pub token: String,
 }
Expand description

validation token that clients receive as proof for submiting valid PoW

-

Fields

token: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Fields

token: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/verify_pow/struct.verify_pow.html b/mcaptcha/api/v1/pow/verify_pow/struct.verify_pow.html index 365b31f1..656d6071 100644 --- a/mcaptcha/api/v1/pow/verify_pow/struct.verify_pow.html +++ b/mcaptcha/api/v1/pow/verify_pow/struct.verify_pow.html @@ -1,23 +1,30 @@ -verify_pow in mcaptcha::api::v1::pow::verify_pow - Rust

Struct mcaptcha::api::v1::pow::verify_pow::verify_pow[][src]

pub struct verify_pow;
Expand description

route handler that verifies PoW and issues a solution token +verify_pow in mcaptcha::api::v1::pow::verify_pow - Rust +

+
pub struct verify_pow;
Expand description

route handler that verifies PoW and issues a solution token if verification is successful

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/verify_token/index.html b/mcaptcha/api/v1/pow/verify_token/index.html index cd3c8966..9e0311ee 100644 --- a/mcaptcha/api/v1/pow/verify_token/index.html +++ b/mcaptcha/api/v1/pow/verify_token/index.html @@ -1,6 +1,11 @@ -mcaptcha::api::v1::pow::verify_token - Rust

Module mcaptcha::api::v1::pow::verify_token[][src]

Expand description

PoW success token module

-

Structs

+mcaptcha::api::v1::pow::verify_token - Rust + +
Expand description

PoW success token module

+

Structs

route hander that validates a PoW solution token

-
- +
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/verify_token/struct.CaptchaValidateResp.html b/mcaptcha/api/v1/pow/verify_token/struct.CaptchaValidateResp.html index 4952d723..99355514 100644 --- a/mcaptcha/api/v1/pow/verify_token/struct.CaptchaValidateResp.html +++ b/mcaptcha/api/v1/pow/verify_token/struct.CaptchaValidateResp.html @@ -1,32 +1,38 @@ -CaptchaValidateResp in mcaptcha::api::v1::pow::verify_token - Rust

Struct mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp[][src]

pub struct CaptchaValidateResp {
-    pub valid: bool,
-}

Fields

valid: bool

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +CaptchaValidateResp in mcaptcha::api::v1::pow::verify_token - Rust + +
pub struct CaptchaValidateResp {
+    pub valid: bool,
+}

Fields

valid: bool

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/verify_token/struct.validate_captcha_token.html b/mcaptcha/api/v1/pow/verify_token/struct.validate_captcha_token.html index 30a1004c..23c0fea1 100644 --- a/mcaptcha/api/v1/pow/verify_token/struct.validate_captcha_token.html +++ b/mcaptcha/api/v1/pow/verify_token/struct.validate_captcha_token.html @@ -1,22 +1,29 @@ -validate_captcha_token in mcaptcha::api::v1::pow::verify_token - Rust

Struct mcaptcha::api::v1::pow::verify_token::validate_captcha_token[][src]

pub struct validate_captcha_token;
Expand description

route hander that validates a PoW solution token

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +validate_captcha_token in mcaptcha::api::v1::pow::verify_token - Rust + +
pub struct validate_captcha_token;
Expand description

route hander that validates a PoW solution token

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/routes/constant.ROUTES.html b/mcaptcha/api/v1/routes/constant.ROUTES.html index dcd4c4f8..3fdeba31 100644 --- a/mcaptcha/api/v1/routes/constant.ROUTES.html +++ b/mcaptcha/api/v1/routes/constant.ROUTES.html @@ -1,3 +1,8 @@ -ROUTES in mcaptcha::api::v1::routes - Rust

Constant mcaptcha::api::v1::routes::ROUTES[][src]

pub const ROUTES: Routes;
- +ROUTES in mcaptcha::api::v1::routes - Rust + +
+

Constant mcaptcha::api::v1::routes::ROUTES

source · []
pub const ROUTES: Routes;
\ No newline at end of file diff --git a/mcaptcha/api/v1/routes/index.html b/mcaptcha/api/v1/routes/index.html index 71deddc2..04382eaa 100644 --- a/mcaptcha/api/v1/routes/index.html +++ b/mcaptcha/api/v1/routes/index.html @@ -1,5 +1,10 @@ -mcaptcha::api::v1::routes - Rust

Module mcaptcha::api::v1::routes[][src]

Structs

-

Constants

-
- +mcaptcha::api::v1::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/api/v1/routes/struct.Routes.html b/mcaptcha/api/v1/routes/struct.Routes.html index ce4a8465..b6876525 100644 --- a/mcaptcha/api/v1/routes/struct.Routes.html +++ b/mcaptcha/api/v1/routes/struct.Routes.html @@ -1,28 +1,35 @@ -Routes in mcaptcha::api::v1::routes - Rust

Struct mcaptcha::api::v1::routes::Routes[][src]

pub struct Routes {
+Routes in mcaptcha::api::v1::routes - Rust
+    
+    
pub struct Routes {
     pub auth: Auth,
     pub account: Account,
     pub captcha: Captcha,
     pub meta: Meta,
     pub pow: PoW,
     pub notifications: Notifications,
-}

Fields

auth: Authaccount: Accountcaptcha: Captchameta: Metapow: PoWnotifications: Notifications

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Fields

auth: Authaccount: Accountcaptcha: Captchameta: Metapow: PoWnotifications: Notifications

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/api/v1/sidebar-items.js b/mcaptcha/api/v1/sidebar-items.js index 0d5a3a2f..d4bf1de5 100644 --- a/mcaptcha/api/v1/sidebar-items.js +++ b/mcaptcha/api/v1/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"fn":[["services",""]],"mod":[["account",""],["auth",""],["mcaptcha",""],["meta",""],["notifications",""],["pow",""],["routes",""]]}); \ No newline at end of file +initSidebarItems({"fn":[["get_middleware",""],["services",""]],"mod":[["account",""],["auth",""],["mcaptcha",""],["meta",""],["notifications",""],["pow",""],["routes",""]],"struct":[["RedirectQuery",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/struct.RedirectQuery.html b/mcaptcha/api/v1/struct.RedirectQuery.html new file mode 100644 index 00000000..e4aba41b --- /dev/null +++ b/mcaptcha/api/v1/struct.RedirectQuery.html @@ -0,0 +1,31 @@ +RedirectQuery in mcaptcha::api::v1 - Rust + +
pub struct RedirectQuery {
+    pub redirect_to: Option<String>,
+}

Fields

redirect_to: Option<String>

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
+ \ No newline at end of file diff --git a/mcaptcha/constant.CACHE_AGE.html b/mcaptcha/constant.CACHE_AGE.html index 81db631c..b19bbefe 100644 --- a/mcaptcha/constant.CACHE_AGE.html +++ b/mcaptcha/constant.CACHE_AGE.html @@ -1,3 +1,8 @@ -CACHE_AGE in mcaptcha - Rust

Constant mcaptcha::CACHE_AGE[][src]

pub const CACHE_AGE: u32 = 604800;
- +CACHE_AGE in mcaptcha - Rust + +
pub const CACHE_AGE: u32 = 604800;
\ No newline at end of file diff --git a/mcaptcha/constant.COMPILED_DATE.html b/mcaptcha/constant.COMPILED_DATE.html index 3f93ea3f..b2b2c204 100644 --- a/mcaptcha/constant.COMPILED_DATE.html +++ b/mcaptcha/constant.COMPILED_DATE.html @@ -1,3 +1,8 @@ -COMPILED_DATE in mcaptcha - Rust

Constant mcaptcha::COMPILED_DATE[][src]

pub const COMPILED_DATE: &str = "22-01-08";
- +COMPILED_DATE in mcaptcha - Rust + +
pub const COMPILED_DATE: &str = "22-05-09";
\ No newline at end of file diff --git a/mcaptcha/constant.DOCS.html b/mcaptcha/constant.DOCS.html index 7082404c..40a86d3e 100644 --- a/mcaptcha/constant.DOCS.html +++ b/mcaptcha/constant.DOCS.html @@ -1,3 +1,8 @@ -DOCS in mcaptcha - Rust

Constant mcaptcha::DOCS[][src]

pub const DOCS: Docs;
- +DOCS in mcaptcha - Rust + +
+

Constant mcaptcha::DOCS

source · []
pub const DOCS: Docs;
\ No newline at end of file diff --git a/mcaptcha/constant.GIT_COMMIT_HASH.html b/mcaptcha/constant.GIT_COMMIT_HASH.html index fdadccf9..5e9c4d02 100644 --- a/mcaptcha/constant.GIT_COMMIT_HASH.html +++ b/mcaptcha/constant.GIT_COMMIT_HASH.html @@ -1,3 +1,8 @@ -GIT_COMMIT_HASH in mcaptcha - Rust

Constant mcaptcha::GIT_COMMIT_HASH[][src]

pub const GIT_COMMIT_HASH: &str = "fc8a1670d230fe005f67675d656fbadd8afbba33";
- +GIT_COMMIT_HASH in mcaptcha - Rust + +
pub const GIT_COMMIT_HASH: &str = "914fc216ef0b81b96e519f295c9aa7574fadf49b";
\ No newline at end of file diff --git a/mcaptcha/constant.PAGES.html b/mcaptcha/constant.PAGES.html index c100549d..880663b6 100644 --- a/mcaptcha/constant.PAGES.html +++ b/mcaptcha/constant.PAGES.html @@ -1,3 +1,8 @@ -PAGES in mcaptcha - Rust

Constant mcaptcha::PAGES[][src]

pub const PAGES: Routes;
- +PAGES in mcaptcha - Rust + +
+

Constant mcaptcha::PAGES

source · []
pub const PAGES: Routes;
\ No newline at end of file diff --git a/mcaptcha/constant.PKG_DESCRIPTION.html b/mcaptcha/constant.PKG_DESCRIPTION.html index 3c92a31d..51a7ba27 100644 --- a/mcaptcha/constant.PKG_DESCRIPTION.html +++ b/mcaptcha/constant.PKG_DESCRIPTION.html @@ -1,3 +1,8 @@ -PKG_DESCRIPTION in mcaptcha - Rust

Constant mcaptcha::PKG_DESCRIPTION[][src]

pub const PKG_DESCRIPTION: &str = "mCaptcha - a PoW-based CAPTCHA system";
- +PKG_DESCRIPTION in mcaptcha - Rust + +
pub const PKG_DESCRIPTION: &str = "mCaptcha - a PoW-based CAPTCHA system";
\ No newline at end of file diff --git a/mcaptcha/constant.PKG_HOMEPAGE.html b/mcaptcha/constant.PKG_HOMEPAGE.html index c0a4eba5..9e19812f 100644 --- a/mcaptcha/constant.PKG_HOMEPAGE.html +++ b/mcaptcha/constant.PKG_HOMEPAGE.html @@ -1,3 +1,8 @@ -PKG_HOMEPAGE in mcaptcha - Rust

Constant mcaptcha::PKG_HOMEPAGE[][src]

pub const PKG_HOMEPAGE: &str = "https://mcaptcha.org";
- +PKG_HOMEPAGE in mcaptcha - Rust + +
pub const PKG_HOMEPAGE: &str = "https://mcaptcha.org";
\ No newline at end of file diff --git a/mcaptcha/constant.PKG_NAME.html b/mcaptcha/constant.PKG_NAME.html index 72f299c3..2b761d65 100644 --- a/mcaptcha/constant.PKG_NAME.html +++ b/mcaptcha/constant.PKG_NAME.html @@ -1,3 +1,8 @@ -PKG_NAME in mcaptcha - Rust

Constant mcaptcha::PKG_NAME[][src]

pub const PKG_NAME: &str = "mcaptcha";
- +PKG_NAME in mcaptcha - Rust + +
+

Constant mcaptcha::PKG_NAME

source · []
pub const PKG_NAME: &str = "mcaptcha";
\ No newline at end of file diff --git a/mcaptcha/constant.V1_API_ROUTES.html b/mcaptcha/constant.V1_API_ROUTES.html index da481d38..9a4aa2b4 100644 --- a/mcaptcha/constant.V1_API_ROUTES.html +++ b/mcaptcha/constant.V1_API_ROUTES.html @@ -1,3 +1,8 @@ -V1_API_ROUTES in mcaptcha - Rust

Constant mcaptcha::V1_API_ROUTES[][src]

pub const V1_API_ROUTES: Routes;
- +V1_API_ROUTES in mcaptcha - Rust + +
pub const V1_API_ROUTES: Routes;
\ No newline at end of file diff --git a/mcaptcha/constant.VERSION.html b/mcaptcha/constant.VERSION.html index 6f32e1d2..1c82db6c 100644 --- a/mcaptcha/constant.VERSION.html +++ b/mcaptcha/constant.VERSION.html @@ -1,3 +1,8 @@ -VERSION in mcaptcha - Rust

Constant mcaptcha::VERSION[][src]

pub const VERSION: &str = "0.1.0";
- +VERSION in mcaptcha - Rust + +
+

Constant mcaptcha::VERSION

source · []
pub const VERSION: &str = "0.1.0";
\ No newline at end of file diff --git a/mcaptcha/constant.WIDGET_ROUTES.html b/mcaptcha/constant.WIDGET_ROUTES.html index 85dbb224..29a977a4 100644 --- a/mcaptcha/constant.WIDGET_ROUTES.html +++ b/mcaptcha/constant.WIDGET_ROUTES.html @@ -1,3 +1,8 @@ -WIDGET_ROUTES in mcaptcha - Rust

Constant mcaptcha::WIDGET_ROUTES[][src]

pub const WIDGET_ROUTES: Widget;
- +WIDGET_ROUTES in mcaptcha - Rust + +
pub const WIDGET_ROUTES: Widget;
\ No newline at end of file diff --git a/mcaptcha/data/enum.SystemGroup.html b/mcaptcha/data/enum.SystemGroup.html index 6abe8714..0e717f36 100644 --- a/mcaptcha/data/enum.SystemGroup.html +++ b/mcaptcha/data/enum.SystemGroup.html @@ -1,27 +1,34 @@ -SystemGroup in mcaptcha::data - Rust

Enum mcaptcha::data::SystemGroup[][src]

pub enum SystemGroup {
+SystemGroup in mcaptcha::data - Rust
+    
+    
pub enum SystemGroup {
     Embedded(System<HashCache, EmbeddedMaster>),
     Redis(System<RedisCache, RedisMaster>),
 }
Expand description

Represents mCaptcha cache and master system. When Redis is configured, SystemGroup::Redis is used and in its absense, SystemGroup::Embedded is used

-

Variants

Embedded(System<HashCache, EmbeddedMaster>)

Tuple Fields of Embedded

0: System<HashCache, EmbeddedMaster>
Redis(System<RedisCache, RedisMaster>)

Tuple Fields of Redis

0: System<RedisCache, RedisMaster>

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Variants

Embedded(System<HashCache, EmbeddedMaster>)

Redis(System<RedisCache, RedisMaster>)

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/data/index.html b/mcaptcha/data/index.html index cfce045d..27e4275d 100644 --- a/mcaptcha/data/index.html +++ b/mcaptcha/data/index.html @@ -1,13 +1,18 @@ -mcaptcha::data - Rust

Module mcaptcha::data[][src]

Expand description

App data: redis cache, database connections, etc.

-

Macros

-

Structs

+mcaptcha::data - Rust + +
+

Module mcaptcha::data

source · []
Expand description

App data: redis cache, database connections, etc.

+

Macros

+

Structs

App data

-

Enums

+

Enums

Represents mCaptcha cache and master system. When Redis is configured, SystemGroup::Redis is used and in its absense, SystemGroup::Embedded is used

-

Type Definitions

+

Type Definitions

Mailer data type AsyncSmtpTransport

-
- +
\ No newline at end of file diff --git a/mcaptcha/data/macro.enum_system_actor.html b/mcaptcha/data/macro.enum_system_actor.html index a8f5f5a6..6d69beb4 100644 --- a/mcaptcha/data/macro.enum_system_actor.html +++ b/mcaptcha/data/macro.enum_system_actor.html @@ -1,6 +1,11 @@ -enum_system_actor in mcaptcha::data - Rust

Macro mcaptcha::data::enum_system_actor[][src]

macro_rules! enum_system_actor {
-    ($name : ident, $type : ident) => { ... };
+enum_system_actor in mcaptcha::data - Rust
+    
+    
macro_rules! enum_system_actor {
+    ($name:ident, $type:ident) => { ... };
 }
-
- +
\ No newline at end of file diff --git a/mcaptcha/data/macro.enum_system_wrapper.html b/mcaptcha/data/macro.enum_system_wrapper.html index 1af723a3..a185fbfe 100644 --- a/mcaptcha/data/macro.enum_system_wrapper.html +++ b/mcaptcha/data/macro.enum_system_wrapper.html @@ -1,6 +1,11 @@ -enum_system_wrapper in mcaptcha::data - Rust

Macro mcaptcha::data::enum_system_wrapper[][src]

macro_rules! enum_system_wrapper {
-    ($name : ident, $type : ty, $return_type : ty) => { ... };
+enum_system_wrapper in mcaptcha::data - Rust
+    
+    
macro_rules! enum_system_wrapper {
+    ($name:ident, $type:ty, $return_type:ty) => { ... };
 }
-
- +
\ No newline at end of file diff --git a/mcaptcha/data/struct.Data.html b/mcaptcha/data/struct.Data.html index d867f727..cfaaadc9 100644 --- a/mcaptcha/data/struct.Data.html +++ b/mcaptcha/data/struct.Data.html @@ -1,32 +1,39 @@ -Data in mcaptcha::data - Rust

Struct mcaptcha::data::Data[][src]

pub struct Data {
+Data in mcaptcha::data - Rust
+    
+    
+

Struct mcaptcha::data::Data

source · []
pub struct Data {
     pub db: PgPool,
     pub creds: Config,
     pub captcha: SystemGroup,
-    pub mailer: Option<AsyncSmtpTransport<Tokio1Executor>>,
+    pub mailer: Option<AsyncSmtpTransport<Tokio1Executor>>,
 }
Expand description

App data

Fields

db: PgPool

databse pool

creds: Config

credential management configuration

captcha: SystemGroup

mCaptcha system: Redis cache, etc.

-
mailer: Option<AsyncSmtpTransport<Tokio1Executor>>

email client

-

Implementations

create new instance of app data

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +
mailer: Option<AsyncSmtpTransport<Tokio1Executor>>

email client

+

Implementations

create new instance of app data

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/data/type.Mailer.html b/mcaptcha/data/type.Mailer.html index 2e6b8e4d..3ab3322d 100644 --- a/mcaptcha/data/type.Mailer.html +++ b/mcaptcha/data/type.Mailer.html @@ -1,4 +1,9 @@ -Mailer in mcaptcha::data - Rust

Type Definition mcaptcha::data::Mailer[][src]

pub type Mailer = AsyncSmtpTransport<Tokio1Executor>;
Expand description

Mailer data type AsyncSmtpTransport

-
- +Mailer in mcaptcha::data - Rust + +
+

Type Definition mcaptcha::data::Mailer

source · []
Expand description

Mailer data type AsyncSmtpTransport

+
\ No newline at end of file diff --git a/mcaptcha/date/constant.DAY.html b/mcaptcha/date/constant.DAY.html index 9813a2bf..198b4d46 100644 --- a/mcaptcha/date/constant.DAY.html +++ b/mcaptcha/date/constant.DAY.html @@ -1,3 +1,8 @@ -DAY in mcaptcha::date - Rust

Constant mcaptcha::date::DAY[][src]

pub const DAY: i64 = HOUR * 24; // 86_400i64
- +DAY in mcaptcha::date - Rust + +
+

Constant mcaptcha::date::DAY

source · []
pub const DAY: i64 = HOUR * 24; // 86_400i64
\ No newline at end of file diff --git a/mcaptcha/date/constant.HOUR.html b/mcaptcha/date/constant.HOUR.html index 842a7b78..2a4940aa 100644 --- a/mcaptcha/date/constant.HOUR.html +++ b/mcaptcha/date/constant.HOUR.html @@ -1,3 +1,8 @@ -HOUR in mcaptcha::date - Rust

Constant mcaptcha::date::HOUR[][src]

pub const HOUR: i64 = MINUTE * 60; // 3_600i64
- +HOUR in mcaptcha::date - Rust + +
+

Constant mcaptcha::date::HOUR

source · []
pub const HOUR: i64 = MINUTE * 60; // 3_600i64
\ No newline at end of file diff --git a/mcaptcha/date/constant.MINUTE.html b/mcaptcha/date/constant.MINUTE.html index bc1f06e3..32b3e4a2 100644 --- a/mcaptcha/date/constant.MINUTE.html +++ b/mcaptcha/date/constant.MINUTE.html @@ -1,3 +1,8 @@ -MINUTE in mcaptcha::date - Rust

Constant mcaptcha::date::MINUTE[][src]

pub const MINUTE: i64 = 60;
- +MINUTE in mcaptcha::date - Rust + +
+

Constant mcaptcha::date::MINUTE

source · []
pub const MINUTE: i64 = 60;
\ No newline at end of file diff --git a/mcaptcha/date/constant.WEEK.html b/mcaptcha/date/constant.WEEK.html index 50f3dab0..91177655 100644 --- a/mcaptcha/date/constant.WEEK.html +++ b/mcaptcha/date/constant.WEEK.html @@ -1,3 +1,8 @@ -WEEK in mcaptcha::date - Rust

Constant mcaptcha::date::WEEK[][src]

pub const WEEK: i64 = DAY * 7; // 604_800i64
- +WEEK in mcaptcha::date - Rust + +
+

Constant mcaptcha::date::WEEK

source · []
pub const WEEK: i64 = DAY * 7; // 604_800i64
\ No newline at end of file diff --git a/mcaptcha/date/index.html b/mcaptcha/date/index.html index 965ae4a6..43ef36b5 100644 --- a/mcaptcha/date/index.html +++ b/mcaptcha/date/index.html @@ -1,5 +1,10 @@ -mcaptcha::date - Rust

Module mcaptcha::date[][src]

Structs

-

Constants

-
- +mcaptcha::date - Rust + +
\ No newline at end of file diff --git a/mcaptcha/date/struct.Date.html b/mcaptcha/date/struct.Date.html index 4763b14b..dab1e612 100644 --- a/mcaptcha/date/struct.Date.html +++ b/mcaptcha/date/struct.Date.html @@ -1,32 +1,38 @@ -Date in mcaptcha::date - Rust

Struct mcaptcha::date::Date[][src]

pub struct Date {
+Date in mcaptcha::date - Rust
+    
+    
+

Struct mcaptcha::date::Date

source · []
pub struct Date {
     pub time: OffsetDateTime,
-}

Fields

time: OffsetDateTime

Implementations

print relative time from date

-

print date

-

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Fields

time: OffsetDateTime

Implementations

print relative time from date

+

print date

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/demo/constant.DEMO_PASSWORD.html b/mcaptcha/demo/constant.DEMO_PASSWORD.html index 4cbdcfae..4c30ab10 100644 --- a/mcaptcha/demo/constant.DEMO_PASSWORD.html +++ b/mcaptcha/demo/constant.DEMO_PASSWORD.html @@ -1,4 +1,9 @@ -DEMO_PASSWORD in mcaptcha::demo - Rust

Constant mcaptcha::demo::DEMO_PASSWORD[][src]

pub const DEMO_PASSWORD: &str = "password";
Expand description

Demo password

-
- +DEMO_PASSWORD in mcaptcha::demo - Rust + +
pub const DEMO_PASSWORD: &str = "password";
Expand description

Demo password

+
\ No newline at end of file diff --git a/mcaptcha/demo/constant.DEMO_USER.html b/mcaptcha/demo/constant.DEMO_USER.html index 32f7b474..cf05da02 100644 --- a/mcaptcha/demo/constant.DEMO_USER.html +++ b/mcaptcha/demo/constant.DEMO_USER.html @@ -1,4 +1,9 @@ -DEMO_USER in mcaptcha::demo - Rust

Constant mcaptcha::demo::DEMO_USER[][src]

pub const DEMO_USER: &str = "aaronsw";
Expand description

Demo username

-
- +DEMO_USER in mcaptcha::demo - Rust + +
pub const DEMO_USER: &str = "aaronsw";
Expand description

Demo username

+
\ No newline at end of file diff --git a/mcaptcha/demo/index.html b/mcaptcha/demo/index.html index d2c51e4f..c88186bd 100644 --- a/mcaptcha/demo/index.html +++ b/mcaptcha/demo/index.html @@ -1,7 +1,12 @@ -mcaptcha::demo - Rust

Module mcaptcha::demo[][src]

Structs

-

Constants

+mcaptcha::demo - Rust + +
+

Module mcaptcha::demo

source · []

Structs

+

Constants

Demo password

Demo username

-
- +
\ No newline at end of file diff --git a/mcaptcha/demo/struct.DemoUser.html b/mcaptcha/demo/struct.DemoUser.html index 1cfa3746..c8f6b7f3 100644 --- a/mcaptcha/demo/struct.DemoUser.html +++ b/mcaptcha/demo/struct.DemoUser.html @@ -1,24 +1,31 @@ -DemoUser in mcaptcha::demo - Rust

Struct mcaptcha::demo::DemoUser[][src]

pub struct DemoUser {
-    handle: JoinHandle<()>,
-}

Fields

handle: JoinHandle<()>

Implementations

register demo user runner

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +DemoUser in mcaptcha::demo - Rust + +
pub struct DemoUser {
+    handle: JoinHandle<()>,
+}

Fields

handle: JoinHandle<()>

Implementations

register demo user runner

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/docs/constant.DOCS.html b/mcaptcha/docs/constant.DOCS.html index 625c5235..92af1f8f 100644 --- a/mcaptcha/docs/constant.DOCS.html +++ b/mcaptcha/docs/constant.DOCS.html @@ -1,3 +1,8 @@ -DOCS in mcaptcha::docs - Rust

Constant mcaptcha::docs::DOCS[][src]

pub const DOCS: Docs;
- +DOCS in mcaptcha::docs - Rust + +
+

Constant mcaptcha::docs::DOCS

source · []
pub const DOCS: Docs;
\ No newline at end of file diff --git a/mcaptcha/docs/constant.OPEN_API_SPEC.html b/mcaptcha/docs/constant.OPEN_API_SPEC.html index cd9e6d93..6c8d288a 100644 --- a/mcaptcha/docs/constant.OPEN_API_SPEC.html +++ b/mcaptcha/docs/constant.OPEN_API_SPEC.html @@ -1,3 +1,8 @@ -OPEN_API_SPEC in mcaptcha::docs - Rust

Constant mcaptcha::docs::OPEN_API_SPEC[][src]

const OPEN_API_SPEC: &str = "openapi: 3.0.0\ninfo:\n  version: 0.1.0\n  title: mCaptcha/guard\nservers:\n  - url: /\npaths:\n  /api/v1/signup:\n    post:\n      summary: Registration endpoint\n      operationId: registerUser\n      tags:\n        - user\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/RegisterUser\'\n            example:\n              username: testuser\n              password: mysuperlongandsecurepassword\n              email: testuser@example.com\n      responses:\n        \'200\':\n          description: Successful registration\n        \'400\':\n          description: \'Bad request: username contains profainity/blacklisted words or email not acceptable or password too long/short or duplicate username/password\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/signin:\n    post:\n      summary: Login endpoint\n      operationId: loginUser\n      tags:\n        - user\n        - authentication\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/LoginUser\'\n            example:\n              username: testuser\n              password: mysuperlongandsecurepassword\n      responses:\n        \'200\':\n          description: Successful authentication\n        \'401\':\n          description: \'authentication failed, wrong password\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'404\':\n          description: username not found\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/signout:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Signout endpoint\n      operationId: signoutUser\n      tags:\n        - user\n        - authentication\n      responses:\n        \'200\':\n          description: OK\n  /api/v1/account/delete:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Delete account\n      operationId: deleteAccount\n      tags:\n        - user\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/DeleteUser\'\n            example:\n              password: mysuperlongandsecurepassword\n      responses:\n        \'200\':\n          description: OK\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'404\':\n          description: username not found\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/account/username/exists:\n    post:\n      summary: Check if username exists\n      operationId: usernameExists\n      tags:\n        - user\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/UserDetailCheck\'\n            example:\n              val: testuser\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/UserDetailCheckRes\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/account/email/exists:\n    post:\n      summary: Check if email exists\n      operationId: emailExists\n      tags:\n        - user\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/UserDetailCheck\'\n            example:\n              val: testuser@example.com\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/UserDetailCheckRes\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/meta/health:\n    get:\n      summary: Health check\n      operationId: healthCheck\n      tags:\n        - meta\n        - health\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Health\'\n  /api/v1/meta/build:\n    get:\n      summary: Get server binary build details\n      operationId: buildDetails\n      tags:\n        - meta\n        - build\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/BuildDetails\'\n  /api/v1/mcaptcha/domain/token/add:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Add token for registered domain\n      operationId: addToken\n      tags:\n        - mcaptcha\n        - domain\n        - token\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/MCaptchaID\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/MCaptchaDetails\'\n        \'400\':\n          description: \'Bad request: Submited URI is not a URI or duplicate token name\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/update:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Update token key\n      operationId: updateTokenKey\n      tags:\n        - mcaptcha\n        - domain\n        - token\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/MCaptchaID\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/MCaptchaDetails\'\n        \'400\':\n          description: \'Bad request: Submited URI is not a URI or duplicate token name\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/get:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Get token key\n      operationId: getTokenKey\n      tags:\n        - mcaptcha\n        - domain\n        - token\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/MCaptchaID\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/MCaptchaDetails\'\n        \'400\':\n          description: \'Bad request: Submited URI is not a URI\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'404\':\n          description: token name not found\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/delete:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Delete token from mcaptcha\n      operationId: deleteToken\n      tags:\n        - mcaptcha\n        - domain\n        - token\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/MCaptchaID\'\n      responses:\n        \'200\':\n          description: OK\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/levels/add:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Add levels to a token\n      operationId: addTokenLevels\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/AddLevels\'\n      responses:\n        \'200\':\n          description: OK\n        \'400\':\n          description: duplicate visitor count or difficulty_factor is zero or difficulty_factor decreases with increase in visitor count\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/levels/update:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Update levels of a token\n      operationId: updateTokenLevels\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/AddLevels\'\n      responses:\n        \'200\':\n          description: OK\n        \'400\':\n          description: duplicate visitor count or difficulty_factor is zero or difficulty_factor decreases with increase in visitor count\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/levels/delete:\n    post:\n      security:\n        - cookieAuth: []\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n      summary: Delete levels of a token\n      operationId: deleteTokenLevels\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/AddLevels\'\n      responses:\n        \'200\':\n          description: OK\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/levels/get:\n    post:\n      security:\n        - cookieAuth: []\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n      summary: Get levels of a token\n      operationId: getTokenLevels\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/AddLevels\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Levels\'\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/token/get:\n    post:\n      security:\n        - cookieAuth: []\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n        - duration\n      summary: Get duration of a token\n      operationId: getTokenDuration\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/GetDuration\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Duration\'\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/token/update:\n    post:\n      security:\n        - cookieAuth: []\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n        - duration\n      summary: update duration of a token\n      operationId: updateTokenDuration\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/UpdateDuration\'\n      responses:\n        \'200\':\n          description: OK\n        \'400\':\n          description: \'Bad request: Duration must be greater than 0\'\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\ncomponents:\n  schemas:\n    RegisterUser:\n      type: object\n      required:\n        - username\n        - password\n        - email\n      properties:\n        username:\n          type: string\n        email:\n          type: string\n        password:\n          type: string\n          format: password\n    LoginUser:\n      type: object\n      required:\n        - username\n        - password\n      properties:\n        username:\n          type: string\n        password:\n          type: string\n          format: password\n    DeleteUser:\n      type: object\n      required:\n        - password\n      properties:\n        password:\n          type: string\n          format: password\n    Error:\n      type: object\n      required:\n        - error\n      properties:\n        error:\n          type: string\n    User:\n      type: object\n      required:\n        - id\n        - name\n      properties:\n        id:\n          type: integer\n          format: int64\n        name:\n          type: string\n    UserDetailCheck:\n      type: object\n      required:\n        - val\n      properties:\n        val:\n          type: string\n    Health:\n      type: object\n      required:\n        - db\n      properties:\n        db:\n          type: boolean\n    UserDetailCheckRes:\n      type: object\n      required:\n        - exists\n      properties:\n        val:\n          type: boolean\n    BuildDetails:\n      type: object\n      required:\n        - version\n        - git_commit_hash\n      properties:\n        version:\n          type: string\n        git_commit_hash:\n          type: string\n    AddDomain:\n      type: object\n      required:\n        - name\n      properties:\n        name:\n          type: string\n    DomainVerificationChallenge:\n      type: object\n      required:\n        - verification_challenge\n      properties:\n        verification_challenge:\n          type: string\n    MCaptchaID:\n      type: object\n      required:\n        - name\n        - domain\n      properties:\n        name:\n          type: string\n        domain:\n          type: string\n    MCaptchaDetails:\n      type: object\n      required:\n        - name\n        - key\n      properties:\n        name:\n          type: string\n        key:\n          type: string\n    Level:\n      type: object\n      required:\n        - visitor_threshold\n        - difficulty_factor\n      properties:\n        visitor_threshold:\n          type: number\n          minimum: 1\n          maximum: 2147483647\n        difficulty_factor:\n          type: number\n          minimum: 1\n    GetLevels:\n      type: object\n      required:\n        - token\n      properties:\n        token:\n          type: string\n    Levels:\n      type: array\n      items:\n        $ref: \'#/components/schemas/Level\'\n    AddLevels:\n      type: object\n      required:\n        - name\n        - levels\n      properties:\n        name:\n          type: string\n        levels:\n          type: array\n          items:\n            $ref: \'#/components/schemas/Level\'\n    GetDuration:\n      type: object\n      required:\n        - token\n      properties:\n        token:\n          type: string\n    Duration:\n      type: object\n      required:\n        - duration\n      properties:\n        duration:\n          type: number\n          minimum: 1\n          maximum: 2147483647\n    UpdateDuration:\n      type: object\n      required:\n        - duration\n        - token_name\n      properties:\n        token_name:\n          type: string\n        duration:\n          type: number\n          minimum: 1\n          maximum: 2147483647\n  securitySchemes:\n    cookieAuth:\n      type: apiKey\n      in: cookie\n      name: Authorization\n";
- +OPEN_API_SPEC in mcaptcha::docs - Rust + +
const OPEN_API_SPEC: &str = "openapi: 3.0.0\ninfo:\n  version: 0.1.0\n  title: mCaptcha/guard\nservers:\n  - url: /\npaths:\n  /api/v1/signup:\n    post:\n      summary: Registration endpoint\n      operationId: registerUser\n      tags:\n        - user\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/RegisterUser\'\n            example:\n              username: testuser\n              password: mysuperlongandsecurepassword\n              email: testuser@example.com\n      responses:\n        \'200\':\n          description: Successful registration\n        \'400\':\n          description: \'Bad request: username contains profainity/blacklisted words or email not acceptable or password too long/short or duplicate username/password\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/signin:\n    post:\n      summary: Login endpoint\n      operationId: loginUser\n      tags:\n        - user\n        - authentication\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/LoginUser\'\n            example:\n              username: testuser\n              password: mysuperlongandsecurepassword\n      responses:\n        \'200\':\n          description: Successful authentication\n        \'401\':\n          description: \'authentication failed, wrong password\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'404\':\n          description: username not found\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/signout:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Signout endpoint\n      operationId: signoutUser\n      tags:\n        - user\n        - authentication\n      responses:\n        \'200\':\n          description: OK\n  /api/v1/account/delete:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Delete account\n      operationId: deleteAccount\n      tags:\n        - user\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/DeleteUser\'\n            example:\n              password: mysuperlongandsecurepassword\n      responses:\n        \'200\':\n          description: OK\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'404\':\n          description: username not found\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/account/username/exists:\n    post:\n      summary: Check if username exists\n      operationId: usernameExists\n      tags:\n        - user\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/UserDetailCheck\'\n            example:\n              val: testuser\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/UserDetailCheckRes\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/account/email/exists:\n    post:\n      summary: Check if email exists\n      operationId: emailExists\n      tags:\n        - user\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/UserDetailCheck\'\n            example:\n              val: testuser@example.com\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/UserDetailCheckRes\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/meta/health:\n    get:\n      summary: Health check\n      operationId: healthCheck\n      tags:\n        - meta\n        - health\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Health\'\n  /api/v1/meta/build:\n    get:\n      summary: Get server binary build details\n      operationId: buildDetails\n      tags:\n        - meta\n        - build\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/BuildDetails\'\n  /api/v1/mcaptcha/domain/token/add:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Add token for registered domain\n      operationId: addToken\n      tags:\n        - mcaptcha\n        - domain\n        - token\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/MCaptchaID\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/MCaptchaDetails\'\n        \'400\':\n          description: \'Bad request: Submited URI is not a URI or duplicate token name\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/update:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Update token key\n      operationId: updateTokenKey\n      tags:\n        - mcaptcha\n        - domain\n        - token\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/MCaptchaID\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/MCaptchaDetails\'\n        \'400\':\n          description: \'Bad request: Submited URI is not a URI or duplicate token name\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/get:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Get token key\n      operationId: getTokenKey\n      tags:\n        - mcaptcha\n        - domain\n        - token\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/MCaptchaID\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/MCaptchaDetails\'\n        \'400\':\n          description: \'Bad request: Submited URI is not a URI\'\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'404\':\n          description: token name not found\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/delete:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Delete token from mcaptcha\n      operationId: deleteToken\n      tags:\n        - mcaptcha\n        - domain\n        - token\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/MCaptchaID\'\n      responses:\n        \'200\':\n          description: OK\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/levels/add:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Add levels to a token\n      operationId: addTokenLevels\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/AddLevels\'\n      responses:\n        \'200\':\n          description: OK\n        \'400\':\n          description: duplicate visitor count or difficulty_factor is zero or difficulty_factor decreases with increase in visitor count\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/levels/update:\n    post:\n      security:\n        - cookieAuth: []\n      summary: Update levels of a token\n      operationId: updateTokenLevels\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/AddLevels\'\n      responses:\n        \'200\':\n          description: OK\n        \'400\':\n          description: duplicate visitor count or difficulty_factor is zero or difficulty_factor decreases with increase in visitor count\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'401\':\n          description: authentication failed\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/levels/delete:\n    post:\n      security:\n        - cookieAuth: []\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n      summary: Delete levels of a token\n      operationId: deleteTokenLevels\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/AddLevels\'\n      responses:\n        \'200\':\n          description: OK\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/levels/get:\n    post:\n      security:\n        - cookieAuth: []\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n      summary: Get levels of a token\n      operationId: getTokenLevels\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/AddLevels\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Levels\'\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/token/get:\n    post:\n      security:\n        - cookieAuth: []\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n        - duration\n      summary: Get duration of a token\n      operationId: getTokenDuration\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/GetDuration\'\n      responses:\n        \'200\':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Duration\'\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n  /api/v1/mcaptcha/domain/token/token/update:\n    post:\n      security:\n        - cookieAuth: []\n      tags:\n        - mcaptcha\n        - domain\n        - token\n        - levels\n        - duration\n      summary: update duration of a token\n      operationId: updateTokenDuration\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \'#/components/schemas/UpdateDuration\'\n      responses:\n        \'200\':\n          description: OK\n        \'400\':\n          description: \'Bad request: Duration must be greater than 0\'\n        \'401\':\n          description: (cookie)authentication required or wrong password\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\n        \'500\':\n          description: Internal server error\n          content:\n            application/json:\n              schema:\n                $ref: \'#/components/schemas/Error\'\ncomponents:\n  schemas:\n    RegisterUser:\n      type: object\n      required:\n        - username\n        - password\n        - email\n      properties:\n        username:\n          type: string\n        email:\n          type: string\n        password:\n          type: string\n          format: password\n    LoginUser:\n      type: object\n      required:\n        - username\n        - password\n      properties:\n        username:\n          type: string\n        password:\n          type: string\n          format: password\n    DeleteUser:\n      type: object\n      required:\n        - password\n      properties:\n        password:\n          type: string\n          format: password\n    Error:\n      type: object\n      required:\n        - error\n      properties:\n        error:\n          type: string\n    User:\n      type: object\n      required:\n        - id\n        - name\n      properties:\n        id:\n          type: integer\n          format: int64\n        name:\n          type: string\n    UserDetailCheck:\n      type: object\n      required:\n        - val\n      properties:\n        val:\n          type: string\n    Health:\n      type: object\n      required:\n        - db\n      properties:\n        db:\n          type: boolean\n    UserDetailCheckRes:\n      type: object\n      required:\n        - exists\n      properties:\n        val:\n          type: boolean\n    BuildDetails:\n      type: object\n      required:\n        - version\n        - git_commit_hash\n      properties:\n        version:\n          type: string\n        git_commit_hash:\n          type: string\n    AddDomain:\n      type: object\n      required:\n        - name\n      properties:\n        name:\n          type: string\n    DomainVerificationChallenge:\n      type: object\n      required:\n        - verification_challenge\n      properties:\n        verification_challenge:\n          type: string\n    MCaptchaID:\n      type: object\n      required:\n        - name\n        - domain\n      properties:\n        name:\n          type: string\n        domain:\n          type: string\n    MCaptchaDetails:\n      type: object\n      required:\n        - name\n        - key\n      properties:\n        name:\n          type: string\n        key:\n          type: string\n    Level:\n      type: object\n      required:\n        - visitor_threshold\n        - difficulty_factor\n      properties:\n        visitor_threshold:\n          type: number\n          minimum: 1\n          maximum: 2147483647\n        difficulty_factor:\n          type: number\n          minimum: 1\n    GetLevels:\n      type: object\n      required:\n        - token\n      properties:\n        token:\n          type: string\n    Levels:\n      type: array\n      items:\n        $ref: \'#/components/schemas/Level\'\n    AddLevels:\n      type: object\n      required:\n        - name\n        - levels\n      properties:\n        name:\n          type: string\n        levels:\n          type: array\n          items:\n            $ref: \'#/components/schemas/Level\'\n    GetDuration:\n      type: object\n      required:\n        - token\n      properties:\n        token:\n          type: string\n    Duration:\n      type: object\n      required:\n        - duration\n      properties:\n        duration:\n          type: number\n          minimum: 1\n          maximum: 2147483647\n    UpdateDuration:\n      type: object\n      required:\n        - duration\n        - token_name\n      properties:\n        token_name:\n          type: string\n        duration:\n          type: number\n          minimum: 1\n          maximum: 2147483647\n  securitySchemes:\n    cookieAuth:\n      type: apiKey\n      in: cookie\n      name: Authorization\n";
\ No newline at end of file diff --git a/mcaptcha/docs/fn.handle_embedded_file.html b/mcaptcha/docs/fn.handle_embedded_file.html index f4f133b0..b6a81186 100644 --- a/mcaptcha/docs/fn.handle_embedded_file.html +++ b/mcaptcha/docs/fn.handle_embedded_file.html @@ -1,3 +1,8 @@ -handle_embedded_file in mcaptcha::docs - Rust

Function mcaptcha::docs::handle_embedded_file[][src]

pub fn handle_embedded_file(path: &str) -> HttpResponse
- +handle_embedded_file in mcaptcha::docs - Rust + +
pub fn handle_embedded_file(path: &str) -> HttpResponse
\ No newline at end of file diff --git a/mcaptcha/docs/fn.services.html b/mcaptcha/docs/fn.services.html index 2c33fca6..bf362318 100644 --- a/mcaptcha/docs/fn.services.html +++ b/mcaptcha/docs/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::docs - Rust

Function mcaptcha::docs::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::docs - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/docs/index.html b/mcaptcha/docs/index.html index e711b716..64cfefd9 100644 --- a/mcaptcha/docs/index.html +++ b/mcaptcha/docs/index.html @@ -1,7 +1,12 @@ -mcaptcha::docs - Rust

Module mcaptcha::docs[][src]

Modules

-

Structs

-

Constants

-

Functions

-
- +mcaptcha::docs - Rust + +
\ No newline at end of file diff --git a/mcaptcha/docs/routes/index.html b/mcaptcha/docs/routes/index.html index 0a15cc9a..c89e7366 100644 --- a/mcaptcha/docs/routes/index.html +++ b/mcaptcha/docs/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::docs::routes - Rust

Module mcaptcha::docs::routes[][src]

Structs

-
- +mcaptcha::docs::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/docs/routes/struct.Docs.html b/mcaptcha/docs/routes/struct.Docs.html index a83d43ab..b8d4f8e3 100644 --- a/mcaptcha/docs/routes/struct.Docs.html +++ b/mcaptcha/docs/routes/struct.Docs.html @@ -1,25 +1,32 @@ -Docs in mcaptcha::docs::routes - Rust

Struct mcaptcha::docs::routes::Docs[][src]

pub struct Docs {
-    pub home: &'static str,
-    pub spec: &'static str,
-    pub assets: &'static str,
-}

Fields

home: &'static strspec: &'static strassets: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Docs in mcaptcha::docs::routes - Rust + +
pub struct Docs {
+    pub home: &'static str,
+    pub spec: &'static str,
+    pub assets: &'static str,
+}

Fields

home: &'static strspec: &'static strassets: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/docs/struct.Asset.html b/mcaptcha/docs/struct.Asset.html index 5508fc71..60ad9817 100644 --- a/mcaptcha/docs/struct.Asset.html +++ b/mcaptcha/docs/struct.Asset.html @@ -1,25 +1,32 @@ -Asset in mcaptcha::docs - Rust

Struct mcaptcha::docs::Asset[][src]

struct Asset;

Implementations

Get an embedded file and its metadata.

-

Iterates over the file paths in the folder.

-

Trait Implementations

Get an embedded file and its metadata. Read more

-

Iterates over the file paths in the folder. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Asset in mcaptcha::docs - Rust + +
struct Asset;

Implementations

Get an embedded file and its metadata.

+

Iterates over the file paths in the folder.

+

Trait Implementations

Get an embedded file and its metadata. Read more

+

Iterates over the file paths in the folder. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/docs/struct.dist.html b/mcaptcha/docs/struct.dist.html index 9b657a0f..6d7ac78f 100644 --- a/mcaptcha/docs/struct.dist.html +++ b/mcaptcha/docs/struct.dist.html @@ -1,21 +1,28 @@ -dist in mcaptcha::docs - Rust

Struct mcaptcha::docs::dist[][src]

pub struct dist;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +dist in mcaptcha::docs - Rust + +
+

Struct mcaptcha::docs::dist

source · []
pub struct dist;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/docs/struct.index.html b/mcaptcha/docs/struct.index.html index a9ce56b4..86d9b56c 100644 --- a/mcaptcha/docs/struct.index.html +++ b/mcaptcha/docs/struct.index.html @@ -1,21 +1,28 @@ -index in mcaptcha::docs - Rust

Struct mcaptcha::docs::index[][src]

pub struct index;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +index in mcaptcha::docs - Rust + +
pub struct index;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/docs/struct.spec.html b/mcaptcha/docs/struct.spec.html index 476d9a25..9dfb1361 100644 --- a/mcaptcha/docs/struct.spec.html +++ b/mcaptcha/docs/struct.spec.html @@ -1,21 +1,28 @@ -spec in mcaptcha::docs - Rust

Struct mcaptcha::docs::spec[][src]

pub struct spec;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +spec in mcaptcha::docs - Rust + +
+

Struct mcaptcha::docs::spec

source · []
pub struct spec;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/email/index.html b/mcaptcha/email/index.html index 2a4ed923..76bb8a18 100644 --- a/mcaptcha/email/index.html +++ b/mcaptcha/email/index.html @@ -1,5 +1,10 @@ -mcaptcha::email - Rust

Module mcaptcha::email[][src]

Modules

+mcaptcha::email - Rust + +
+

Module mcaptcha::email

source · []

Modules

Email operations: verification, notification, etc

-
- +
\ No newline at end of file diff --git a/mcaptcha/email/verification/constant.PAGE.html b/mcaptcha/email/verification/constant.PAGE.html index 49cf8344..7299bb0a 100644 --- a/mcaptcha/email/verification/constant.PAGE.html +++ b/mcaptcha/email/verification/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::email::verification - Rust

Constant mcaptcha::email::verification::PAGE[][src]

const PAGE: &str = "Login";
- +PAGE in mcaptcha::email::verification - Rust + +
const PAGE: &str = "Login";
\ No newline at end of file diff --git a/mcaptcha/email/verification/fn.verification.html b/mcaptcha/email/verification/fn.verification.html index 1cd15919..7c5d6460 100644 --- a/mcaptcha/email/verification/fn.verification.html +++ b/mcaptcha/email/verification/fn.verification.html @@ -1,3 +1,8 @@ -verification in mcaptcha::email::verification - Rust

Function mcaptcha::email::verification::verification[][src]

async fn verification(
    data: &Data,
    to: &str,
    verification_link: &str
) -> Result<(), ServiceError>
- +verification in mcaptcha::email::verification - Rust + +
async fn verification(
    data: &Data,
    to: &str,
    verification_link: &str
) -> Result<(), ServiceError>
\ No newline at end of file diff --git a/mcaptcha/email/verification/index.html b/mcaptcha/email/verification/index.html index 4fe89263..ccbd29c2 100644 --- a/mcaptcha/email/verification/index.html +++ b/mcaptcha/email/verification/index.html @@ -1,7 +1,12 @@ -mcaptcha::email::verification - Rust

Module mcaptcha::email::verification[][src]

Expand description

Email operations: verification, notification, etc

-

Structs

-

Constants

-

Functions

-
- +mcaptcha::email::verification - Rust + +
Expand description

Email operations: verification, notification, etc

+

Structs

+

Constants

+

Functions

+
\ No newline at end of file diff --git a/mcaptcha/email/verification/struct.IndexPage.html b/mcaptcha/email/verification/struct.IndexPage.html index d02eb6c1..a5f41282 100644 --- a/mcaptcha/email/verification/struct.IndexPage.html +++ b/mcaptcha/email/verification/struct.IndexPage.html @@ -1,31 +1,37 @@ -IndexPage in mcaptcha::email::verification - Rust

Struct mcaptcha::email::verification::IndexPage[][src]

struct IndexPage<'a> {
-    verification_link: &'a str,
-}

Fields

verification_link: &'a str

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +IndexPage in mcaptcha::email::verification - Rust + +
struct IndexPage<'a> {
+    verification_link: &'a str,
+}

Fields

verification_link: &'a str

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/errors/enum.PageError.html b/mcaptcha/errors/enum.PageError.html index f5292033..579a4b64 100644 --- a/mcaptcha/errors/enum.PageError.html +++ b/mcaptcha/errors/enum.PageError.html @@ -1,38 +1,45 @@ -PageError in mcaptcha::errors - Rust

Enum mcaptcha::errors::PageError[][src]

pub enum PageError {
+PageError in mcaptcha::errors - Rust
+    
+    
pub enum PageError {
     InternalServerError,
     ServiceError(ServiceError),
-}

Variants

InternalServerError
ServiceError(ServiceError)

Tuple Fields of ServiceError

Trait Implementations

Formats the value using the given formatter. Read more

-

Formats the value using the given formatter. Read more

-

The lower-level source of this error, if any. Read more

-
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

-
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

-
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

-

Performs the conversion.

-

This method tests for self and other values to be equal, and is used -by ==. Read more

-

This method tests for !=.

-

Creates full response for error. Read more

-

Returns appropriate status code for error. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

Converts the given value to a String. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Variants

InternalServerError

ServiceError(ServiceError)

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

The lower-level source of this error, if any. Read more

+
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

+
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

+
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

+

Performs the conversion.

+

Performs the conversion.

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Creates full response for error. Read more

+

Returns appropriate status code for error. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

Converts the given value to a String. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/errors/enum.ServiceError.html b/mcaptcha/errors/enum.ServiceError.html index ef2b8e96..a6a12b91 100644 --- a/mcaptcha/errors/enum.ServiceError.html +++ b/mcaptcha/errors/enum.ServiceError.html @@ -1,4 +1,10 @@ -ServiceError in mcaptcha::errors - Rust

Enum mcaptcha::errors::ServiceError[][src]

Variants

InternalServerError

ClosedForRegistration

NotAnEmail

NotAUrl

WrongPassword

UsernameNotFound

AccountNotFound

ProfainityError

when the value passed contains profainity

+

BlacklistError

when the value passed contains blacklisted words see blacklist

-
UsernameCaseMappedError

when the value passed contains characters not present +

UsernameCaseMappedError

when the value passed contains characters not present in UsernameCaseMapped profile

-
PasswordTooShort
PasswordTooLong
PasswordsDontMatch
UsernameTaken

when the a username is already taken

-
EmailTaken

email is already taken

-
UnableToSendEmail(SmtpErrorWrapper)

Unable to send email

-

Tuple Fields of UnableToSendEmail

TokenNotFound

when the a token name is already taken +

PasswordTooShort

PasswordTooLong

PasswordsDontMatch

UsernameTaken

when the a username is already taken

+

EmailTaken

email is already taken

+

UnableToSendEmail(SmtpErrorWrapper)

Unable to send email

+

TokenNotFound

when the a token name is already taken token not found

-
CaptchaError(CaptchaError)

Tuple Fields of CaptchaError

0: CaptchaError

Trait Implementations

Formats the value using the given formatter. Read more

-

Formats the value using the given formatter. Read more

-

The lower-level source of this error, if any. Read more

-
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

-
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

-
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

This method tests for self and other values to be equal, and is used -by ==. Read more

-

This method tests for !=.

-

Creates full response for error. Read more

-

Returns appropriate status code for error. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

Converts the given value to a String. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

CaptchaError(CaptchaError)

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

The lower-level source of this error, if any. Read more

+
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

+
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

+
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Creates full response for error. Read more

+

Returns appropriate status code for error. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

Converts the given value to a String. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/errors/index.html b/mcaptcha/errors/index.html index 49c3dcbb..c061a371 100644 --- a/mcaptcha/errors/index.html +++ b/mcaptcha/errors/index.html @@ -1,6 +1,11 @@ -mcaptcha::errors - Rust

Module mcaptcha::errors[][src]

Structs

-

Enums

-

Type Definitions

-
- +mcaptcha::errors - Rust + +
\ No newline at end of file diff --git a/mcaptcha/errors/struct.ErrorToResponse.html b/mcaptcha/errors/struct.ErrorToResponse.html index a4f9f2ef..bc96fe87 100644 --- a/mcaptcha/errors/struct.ErrorToResponse.html +++ b/mcaptcha/errors/struct.ErrorToResponse.html @@ -1,25 +1,32 @@ -ErrorToResponse in mcaptcha::errors - Rust

Struct mcaptcha::errors::ErrorToResponse[][src]

pub struct ErrorToResponse {
-    pub error: String,
-}

Fields

error: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +ErrorToResponse in mcaptcha::errors - Rust + +
pub struct ErrorToResponse {
+    pub error: String,
+}

Fields

error: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/errors/struct.SmtpErrorWrapper.html b/mcaptcha/errors/struct.SmtpErrorWrapper.html index c25bbdce..de3dd8f1 100644 --- a/mcaptcha/errors/struct.SmtpErrorWrapper.html +++ b/mcaptcha/errors/struct.SmtpErrorWrapper.html @@ -1,31 +1,38 @@ -SmtpErrorWrapper in mcaptcha::errors - Rust

Struct mcaptcha::errors::SmtpErrorWrapper[][src]

pub struct SmtpErrorWrapper(SmtpError);

Tuple Fields

0: SmtpError

Trait Implementations

Formats the value using the given formatter. Read more

-

Formats the value using the given formatter. Read more

-

The lower-level source of this error, if any. Read more

-
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

-
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

-
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

This method tests for self and other values to be equal, and is used -by ==. Read more

-

This method tests for !=.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

Converts the given value to a String. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +SmtpErrorWrapper in mcaptcha::errors - Rust + +
pub struct SmtpErrorWrapper(SmtpError);

Tuple Fields

0: SmtpError

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

The lower-level source of this error, if any. Read more

+
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

+
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

+
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

Converts the given value to a String. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/errors/type.PageResult.html b/mcaptcha/errors/type.PageResult.html index 9d6d4445..9e407dca 100644 --- a/mcaptcha/errors/type.PageResult.html +++ b/mcaptcha/errors/type.PageResult.html @@ -1,3 +1,8 @@ -PageResult in mcaptcha::errors - Rust

Type Definition mcaptcha::errors::PageResult[][src]

pub type PageResult<V> = Result<V, PageError>;
- +PageResult in mcaptcha::errors - Rust + +
+

Type Definition mcaptcha::errors::PageResult

source · []
pub type PageResult<V> = Result<V, PageError>;
\ No newline at end of file diff --git a/mcaptcha/errors/type.ServiceResult.html b/mcaptcha/errors/type.ServiceResult.html index d2244d38..8aa412d3 100644 --- a/mcaptcha/errors/type.ServiceResult.html +++ b/mcaptcha/errors/type.ServiceResult.html @@ -1,3 +1,8 @@ -ServiceResult in mcaptcha::errors - Rust

Type Definition mcaptcha::errors::ServiceResult[][src]

pub type ServiceResult<V> = Result<V, ServiceError>;
- +ServiceResult in mcaptcha::errors - Rust + +
+

Type Definition mcaptcha::errors::ServiceResult

source · []
pub type ServiceResult<V> = Result<V, ServiceError>;
\ No newline at end of file diff --git a/mcaptcha/fn.get_identity_service.html b/mcaptcha/fn.get_identity_service.html index 5b156c24..25758fbd 100644 --- a/mcaptcha/fn.get_identity_service.html +++ b/mcaptcha/fn.get_identity_service.html @@ -1,3 +1,8 @@ -get_identity_service in mcaptcha - Rust

Function mcaptcha::get_identity_service[][src]

pub fn get_identity_service() -> IdentityService<CookieIdentityPolicy>
- +get_identity_service in mcaptcha - Rust + +
pub fn get_identity_service() -> IdentityService<CookieIdentityPolicy>
\ No newline at end of file diff --git a/mcaptcha/fn.get_json_err.html b/mcaptcha/fn.get_json_err.html index c4ae40d0..f1e9603b 100644 --- a/mcaptcha/fn.get_json_err.html +++ b/mcaptcha/fn.get_json_err.html @@ -1,3 +1,8 @@ -get_json_err in mcaptcha - Rust

Function mcaptcha::get_json_err[][src]

pub fn get_json_err() -> JsonConfig
- +get_json_err in mcaptcha - Rust + +
pub fn get_json_err() -> JsonConfig
\ No newline at end of file diff --git a/mcaptcha/fn.main.html b/mcaptcha/fn.main.html index 9f35f839..d9749944 100644 --- a/mcaptcha/fn.main.html +++ b/mcaptcha/fn.main.html @@ -1,3 +1,8 @@ -main in mcaptcha - Rust

Function mcaptcha::main[][src]

pub(crate) fn main() -> Result<()>
- +main in mcaptcha - Rust + +
+

Function mcaptcha::main

source · []
pub(crate) fn main() -> Result<()>
\ No newline at end of file diff --git a/mcaptcha/index.html b/mcaptcha/index.html index 4e7978a2..52e453b8 100644 --- a/mcaptcha/index.html +++ b/mcaptcha/index.html @@ -1,12 +1,17 @@ -mcaptcha - Rust

Crate mcaptcha[][src]

Modules

+mcaptcha - Rust + +

Constants

+

Functions

+

Type Definitions

+
\ No newline at end of file diff --git a/mcaptcha/middleware/auth/index.html b/mcaptcha/middleware/auth/index.html deleted file mode 100644 index 1c7e826f..00000000 --- a/mcaptcha/middleware/auth/index.html +++ /dev/null @@ -1,4 +0,0 @@ -mcaptcha::middleware::auth - Rust

Module mcaptcha::middleware::auth[][src]

Structs

-
- - \ No newline at end of file diff --git a/mcaptcha/middleware/auth/sidebar-items.js b/mcaptcha/middleware/auth/sidebar-items.js deleted file mode 100644 index b8697dbc..00000000 --- a/mcaptcha/middleware/auth/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["CheckLogin",""],["CheckLoginMiddleware",""]]}); \ No newline at end of file diff --git a/mcaptcha/middleware/auth/struct.CheckLogin.html b/mcaptcha/middleware/auth/struct.CheckLogin.html deleted file mode 100644 index 679bfd92..00000000 --- a/mcaptcha/middleware/auth/struct.CheckLogin.html +++ /dev/null @@ -1,27 +0,0 @@ -CheckLogin in mcaptcha::middleware::auth - Rust

Struct mcaptcha::middleware::auth::CheckLogin[][src]

pub struct CheckLogin;

Trait Implementations

Responses produced by the service.

-

Errors produced by the service.

-

The TransformService value created by this factory

-

Errors produced while building a transform service.

-

The future response value.

-

Creates and returns a new Transform component, asynchronously

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- - \ No newline at end of file diff --git a/mcaptcha/middleware/auth/struct.CheckLoginMiddleware.html b/mcaptcha/middleware/auth/struct.CheckLoginMiddleware.html deleted file mode 100644 index 647e1d7c..00000000 --- a/mcaptcha/middleware/auth/struct.CheckLoginMiddleware.html +++ /dev/null @@ -1,33 +0,0 @@ -CheckLoginMiddleware in mcaptcha::middleware::auth - Rust

Struct mcaptcha::middleware::auth::CheckLoginMiddleware[][src]

pub struct CheckLoginMiddleware<S> {
-    service: S,
-}

Fields

service: S

Trait Implementations

Responses given by the service.

-

Errors produced by the service when polling readiness or executing call.

-

The future response value.

-

Returns Ready when the service is able to process requests. Read more

-

Process the request and return the response asynchronously. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Convert to a Service

-

Should always be Self

-

Map this service’s output to a different type, returning a new service -of the resulting type. Read more

-

Map this service’s error to a different error, returning a new service. Read more

-

Call another service after call to this one has resolved successfully. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- - \ No newline at end of file diff --git a/mcaptcha/middleware/index.html b/mcaptcha/middleware/index.html deleted file mode 100644 index 0fcb7c82..00000000 --- a/mcaptcha/middleware/index.html +++ /dev/null @@ -1,4 +0,0 @@ -mcaptcha::middleware - Rust

Module mcaptcha::middleware[][src]

Modules

-
- - \ No newline at end of file diff --git a/mcaptcha/middleware/sidebar-items.js b/mcaptcha/middleware/sidebar-items.js deleted file mode 100644 index 0a37415a..00000000 --- a/mcaptcha/middleware/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"mod":[["auth",""]]}); \ No newline at end of file diff --git a/mcaptcha/pages/auth/fn.services.html b/mcaptcha/pages/auth/fn.services.html index 59dda50e..11517d6c 100644 --- a/mcaptcha/pages/auth/fn.services.html +++ b/mcaptcha/pages/auth/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::pages::auth - Rust

Function mcaptcha::pages::auth::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::pages::auth - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/pages/auth/index.html b/mcaptcha/pages/auth/index.html index 40698157..5bb563a4 100644 --- a/mcaptcha/pages/auth/index.html +++ b/mcaptcha/pages/auth/index.html @@ -1,5 +1,10 @@ -mcaptcha::pages::auth - Rust

Module mcaptcha::pages::auth[][src]

Modules

-

Functions

-
- +mcaptcha::pages::auth - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/auth/login/constant.PAGE.html b/mcaptcha/pages/auth/login/constant.PAGE.html index 2b24051e..1efa1a73 100644 --- a/mcaptcha/pages/auth/login/constant.PAGE.html +++ b/mcaptcha/pages/auth/login/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::auth::login - Rust

Constant mcaptcha::pages::auth::login::PAGE[][src]

const PAGE: &str = "Login";
- +PAGE in mcaptcha::pages::auth::login - Rust + +
const PAGE: &str = "Login";
\ No newline at end of file diff --git a/mcaptcha/pages/auth/login/index.html b/mcaptcha/pages/auth/login/index.html index ef3b78f9..7cff790c 100644 --- a/mcaptcha/pages/auth/login/index.html +++ b/mcaptcha/pages/auth/login/index.html @@ -1,5 +1,10 @@ -mcaptcha::pages::auth::login - Rust

Module mcaptcha::pages::auth::login[][src]

Structs

-

Constants

-
- +mcaptcha::pages::auth::login - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/auth/login/struct.INDEX.html b/mcaptcha/pages/auth/login/struct.INDEX.html index 7996be7c..e05c3871 100644 --- a/mcaptcha/pages/auth/login/struct.INDEX.html +++ b/mcaptcha/pages/auth/login/struct.INDEX.html @@ -1,31 +1,37 @@ -INDEX in mcaptcha::pages::auth::login - Rust

Struct mcaptcha::pages::auth::login::INDEX[][src]

struct INDEX {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

-
Examples
+INDEX in mcaptcha::pages::auth::login - Rust + +
struct INDEX {
+    __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

+
Examples

Basic usage:

let s = String::from("foo");
 
 assert_eq!("foo", s.as_str());
-

Returns this String’s capacity, in bytes.

-
Examples
+

Returns this String’s capacity, in bytes.

+
Examples

Basic usage:

let s = String::with_capacity(10);
 
 assert!(s.capacity() >= 10);
-

Returns a byte slice of this String’s contents.

-

The inverse of this method is from_utf8.

-
Examples
+

Returns a byte slice of this String’s contents.

+

The inverse of this method is from_utf8.

+
Examples

Basic usage:

let s = String::from("hello");
 
 assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes());
-

Returns the length of this String, in bytes, not chars or +

Returns the length of this String, in bytes, not chars or graphemes. In other words, it might not be what a human considers the length of the string.

-
Examples
+
Examples

Basic usage:

let a = String::from("foo");
@@ -34,8 +40,8 @@ length of the string.

let fancy_f = String::from("ƒoo"); assert_eq!(fancy_f.len(), 4); assert_eq!(fancy_f.chars().count(), 3);
-

Returns true if this String has a length of zero, and false otherwise.

-
Examples
+

Returns true if this String has a length of zero, and false otherwise.

+
Examples

Basic usage:

let mut v = String::new();
@@ -43,26 +49,1183 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Methods from Deref<Target = str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/auth/login/struct.IndexPage.html b/mcaptcha/pages/auth/login/struct.IndexPage.html index 18e563ae..6390f364 100644 --- a/mcaptcha/pages/auth/login/struct.IndexPage.html +++ b/mcaptcha/pages/auth/login/struct.IndexPage.html @@ -1,30 +1,36 @@ -IndexPage in mcaptcha::pages::auth::login - Rust

Struct mcaptcha::pages::auth::login::IndexPage[][src]

struct IndexPage;

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Returns the “default value” for a type. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +IndexPage in mcaptcha::pages::auth::login - Rust + +
struct IndexPage;

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Returns the “default value” for a type. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/auth/login/struct.login.html b/mcaptcha/pages/auth/login/struct.login.html index 794cdb99..0c101441 100644 --- a/mcaptcha/pages/auth/login/struct.login.html +++ b/mcaptcha/pages/auth/login/struct.login.html @@ -1,21 +1,28 @@ -login in mcaptcha::pages::auth::login - Rust

Struct mcaptcha::pages::auth::login::login[][src]

pub struct login;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +login in mcaptcha::pages::auth::login - Rust + +
pub struct login;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/auth/register/constant.PAGE.html b/mcaptcha/pages/auth/register/constant.PAGE.html index 083d59de..6a358448 100644 --- a/mcaptcha/pages/auth/register/constant.PAGE.html +++ b/mcaptcha/pages/auth/register/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::auth::register - Rust

Constant mcaptcha::pages::auth::register::PAGE[][src]

const PAGE: &str = "Join";
- +PAGE in mcaptcha::pages::auth::register - Rust + +
const PAGE: &str = "Join";
\ No newline at end of file diff --git a/mcaptcha/pages/auth/register/index.html b/mcaptcha/pages/auth/register/index.html index a3a6af0f..eb7a69ba 100644 --- a/mcaptcha/pages/auth/register/index.html +++ b/mcaptcha/pages/auth/register/index.html @@ -1,5 +1,10 @@ -mcaptcha::pages::auth::register - Rust

Module mcaptcha::pages::auth::register[][src]

Structs

-

Constants

-
- +mcaptcha::pages::auth::register - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/auth/register/struct.INDEX.html b/mcaptcha/pages/auth/register/struct.INDEX.html index 08852fbf..127b3935 100644 --- a/mcaptcha/pages/auth/register/struct.INDEX.html +++ b/mcaptcha/pages/auth/register/struct.INDEX.html @@ -1,31 +1,37 @@ -INDEX in mcaptcha::pages::auth::register - Rust

Struct mcaptcha::pages::auth::register::INDEX[][src]

struct INDEX {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

-
Examples
+INDEX in mcaptcha::pages::auth::register - Rust + +
struct INDEX {
+    __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

+
Examples

Basic usage:

let s = String::from("foo");
 
 assert_eq!("foo", s.as_str());
-

Returns this String’s capacity, in bytes.

-
Examples
+

Returns this String’s capacity, in bytes.

+
Examples

Basic usage:

let s = String::with_capacity(10);
 
 assert!(s.capacity() >= 10);
-

Returns a byte slice of this String’s contents.

-

The inverse of this method is from_utf8.

-
Examples
+

Returns a byte slice of this String’s contents.

+

The inverse of this method is from_utf8.

+
Examples

Basic usage:

let s = String::from("hello");
 
 assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes());
-

Returns the length of this String, in bytes, not chars or +

Returns the length of this String, in bytes, not chars or graphemes. In other words, it might not be what a human considers the length of the string.

-
Examples
+
Examples

Basic usage:

let a = String::from("foo");
@@ -34,8 +40,8 @@ length of the string.

let fancy_f = String::from("ƒoo"); assert_eq!(fancy_f.len(), 4); assert_eq!(fancy_f.chars().count(), 3);
-

Returns true if this String has a length of zero, and false otherwise.

-
Examples
+

Returns true if this String has a length of zero, and false otherwise.

+
Examples

Basic usage:

let mut v = String::new();
@@ -43,26 +49,1183 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Methods from Deref<Target = str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/auth/register/struct.IndexPage.html b/mcaptcha/pages/auth/register/struct.IndexPage.html index a42e78c3..7e44e703 100644 --- a/mcaptcha/pages/auth/register/struct.IndexPage.html +++ b/mcaptcha/pages/auth/register/struct.IndexPage.html @@ -1,30 +1,36 @@ -IndexPage in mcaptcha::pages::auth::register - Rust

Struct mcaptcha::pages::auth::register::IndexPage[][src]

struct IndexPage;

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Returns the “default value” for a type. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +IndexPage in mcaptcha::pages::auth::register - Rust + +
struct IndexPage;

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Returns the “default value” for a type. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/auth/register/struct.join.html b/mcaptcha/pages/auth/register/struct.join.html index 766f4a5c..ce8a33da 100644 --- a/mcaptcha/pages/auth/register/struct.join.html +++ b/mcaptcha/pages/auth/register/struct.join.html @@ -1,21 +1,28 @@ -join in mcaptcha::pages::auth::register - Rust

Struct mcaptcha::pages::auth::register::join[][src]

pub struct join;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +join in mcaptcha::pages::auth::register - Rust + +
pub struct join;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/auth/routes/index.html b/mcaptcha/pages/auth/routes/index.html index 345f1a9c..32accfab 100644 --- a/mcaptcha/pages/auth/routes/index.html +++ b/mcaptcha/pages/auth/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::pages::auth::routes - Rust

Module mcaptcha::pages::auth::routes[][src]

Structs

-
- +mcaptcha::pages::auth::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/auth/routes/struct.Auth.html b/mcaptcha/pages/auth/routes/struct.Auth.html index cc6b982c..19185cee 100644 --- a/mcaptcha/pages/auth/routes/struct.Auth.html +++ b/mcaptcha/pages/auth/routes/struct.Auth.html @@ -1,24 +1,31 @@ -Auth in mcaptcha::pages::auth::routes - Rust

Struct mcaptcha::pages::auth::routes::Auth[][src]

pub struct Auth {
-    pub login: &'static str,
-    pub join: &'static str,
-}

Fields

login: &'static strjoin: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Auth in mcaptcha::pages::auth::routes - Rust + +
pub struct Auth {
+    pub login: &'static str,
+    pub join: &'static str,
+}

Fields

login: &'static strjoin: &'static str

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/auth/sudo/constant.PAGE.html b/mcaptcha/pages/auth/sudo/constant.PAGE.html index 33f8de86..27e2562b 100644 --- a/mcaptcha/pages/auth/sudo/constant.PAGE.html +++ b/mcaptcha/pages/auth/sudo/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::auth::sudo - Rust

Constant mcaptcha::pages::auth::sudo::PAGE[][src]

pub const PAGE: &str = "Confirm Access";
- +PAGE in mcaptcha::pages::auth::sudo - Rust + +
+

Constant mcaptcha::pages::auth::sudo::PAGE

source · []
pub const PAGE: &str = "Confirm Access";
\ No newline at end of file diff --git a/mcaptcha/pages/auth/sudo/index.html b/mcaptcha/pages/auth/sudo/index.html index bc35d69a..4bfc72f1 100644 --- a/mcaptcha/pages/auth/sudo/index.html +++ b/mcaptcha/pages/auth/sudo/index.html @@ -1,5 +1,10 @@ -mcaptcha::pages::auth::sudo - Rust

Module mcaptcha::pages::auth::sudo[][src]

Structs

-

Constants

-
- +mcaptcha::pages::auth::sudo - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/auth/sudo/struct.SudoPage.html b/mcaptcha/pages/auth/sudo/struct.SudoPage.html index ad71bd5a..f1556261 100644 --- a/mcaptcha/pages/auth/sudo/struct.SudoPage.html +++ b/mcaptcha/pages/auth/sudo/struct.SudoPage.html @@ -1,32 +1,38 @@ -SudoPage in mcaptcha::pages::auth::sudo - Rust

Struct mcaptcha::pages::auth::sudo::SudoPage[][src]

pub struct SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
{ - url: &'a str, - data: Option<Vec<(K, V)>>, -}

Fields

url: &'a strdata: Option<Vec<(K, V)>>

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +SudoPage in mcaptcha::pages::auth::sudo - Rust + +
pub struct SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
{ + url: &'a str, + data: Option<Vec<(K, V)>>, +}

Fields

url: &'a strdata: Option<Vec<(K, V)>>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/constant.NAME.html b/mcaptcha/pages/constant.NAME.html index 7d2e7d97..733416c2 100644 --- a/mcaptcha/pages/constant.NAME.html +++ b/mcaptcha/pages/constant.NAME.html @@ -1,3 +1,8 @@ -NAME in mcaptcha::pages - Rust

Constant mcaptcha::pages::NAME[][src]

pub const NAME: &str = "mCaptcha";
- +NAME in mcaptcha::pages - Rust + +
+

Constant mcaptcha::pages::NAME

source · []
pub const NAME: &str = "mCaptcha";
\ No newline at end of file diff --git a/mcaptcha/pages/errors/constant.ERROR_ROUTE.html b/mcaptcha/pages/errors/constant.ERROR_ROUTE.html index 448cb8a6..40b11ccc 100644 --- a/mcaptcha/pages/errors/constant.ERROR_ROUTE.html +++ b/mcaptcha/pages/errors/constant.ERROR_ROUTE.html @@ -1,3 +1,8 @@ -ERROR_ROUTE in mcaptcha::pages::errors - Rust

Constant mcaptcha::pages::errors::ERROR_ROUTE[][src]

const ERROR_ROUTE: &str = "/error/{id}";
- +ERROR_ROUTE in mcaptcha::pages::errors - Rust + +
const ERROR_ROUTE: &str = "/error/{id}";
\ No newline at end of file diff --git a/mcaptcha/pages/errors/constant.PAGE.html b/mcaptcha/pages/errors/constant.PAGE.html index 025e215d..f47bd6e4 100644 --- a/mcaptcha/pages/errors/constant.PAGE.html +++ b/mcaptcha/pages/errors/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::errors - Rust

Constant mcaptcha::pages::errors::PAGE[][src]

const PAGE: &str = "Error";
- +PAGE in mcaptcha::pages::errors - Rust + +
const PAGE: &str = "Error";
\ No newline at end of file diff --git a/mcaptcha/pages/errors/fn.services.html b/mcaptcha/pages/errors/fn.services.html index 5048b1c8..ade539b9 100644 --- a/mcaptcha/pages/errors/fn.services.html +++ b/mcaptcha/pages/errors/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::pages::errors - Rust

Function mcaptcha::pages::errors::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::pages::errors - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/pages/errors/index.html b/mcaptcha/pages/errors/index.html index 63e517ab..e9311617 100644 --- a/mcaptcha/pages/errors/index.html +++ b/mcaptcha/pages/errors/index.html @@ -1,7 +1,12 @@ -mcaptcha::pages::errors - Rust

Module mcaptcha::pages::errors[][src]

Modules

-

Structs

-

Constants

-

Functions

-
- +mcaptcha::pages::errors - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/errors/routes/index.html b/mcaptcha/pages/errors/routes/index.html index 8272e52b..59ebedbc 100644 --- a/mcaptcha/pages/errors/routes/index.html +++ b/mcaptcha/pages/errors/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::pages::errors::routes - Rust

Module mcaptcha::pages::errors::routes[][src]

Structs

-
- +mcaptcha::pages::errors::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/errors/routes/struct.Errors.html b/mcaptcha/pages/errors/routes/struct.Errors.html index 66fc0244..96d4f3d1 100644 --- a/mcaptcha/pages/errors/routes/struct.Errors.html +++ b/mcaptcha/pages/errors/routes/struct.Errors.html @@ -1,24 +1,31 @@ -Errors in mcaptcha::pages::errors::routes - Rust

Struct mcaptcha::pages::errors::routes::Errors[][src]

pub struct Errors {
-    pub internal_server_error: &'static str,
-    pub unknown_error: &'static str,
-}

Fields

internal_server_error: &'static strunknown_error: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Errors in mcaptcha::pages::errors::routes - Rust + +
pub struct Errors {
+    pub internal_server_error: &'static str,
+    pub unknown_error: &'static str,
+}

Fields

internal_server_error: &'static strunknown_error: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/errors/struct.ErrorPage.html b/mcaptcha/pages/errors/struct.ErrorPage.html index c9bbc66f..a83c1d20 100644 --- a/mcaptcha/pages/errors/struct.ErrorPage.html +++ b/mcaptcha/pages/errors/struct.ErrorPage.html @@ -1,32 +1,38 @@ -ErrorPage in mcaptcha::pages::errors - Rust

Struct mcaptcha::pages::errors::ErrorPage[][src]

struct ErrorPage<'a> {
-    title: &'a str,
-    message: &'a str,
-}

Fields

title: &'a strmessage: &'a str

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +ErrorPage in mcaptcha::pages::errors - Rust + +
struct ErrorPage<'a> {
+    title: &'a str,
+    message: &'a str,
+}

Fields

title: &'a strmessage: &'a str

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/errors/struct.INTERNAL_SERVER_ERROR_BODY.html b/mcaptcha/pages/errors/struct.INTERNAL_SERVER_ERROR_BODY.html index fbc3ae84..57978b0a 100644 --- a/mcaptcha/pages/errors/struct.INTERNAL_SERVER_ERROR_BODY.html +++ b/mcaptcha/pages/errors/struct.INTERNAL_SERVER_ERROR_BODY.html @@ -1,31 +1,37 @@ -INTERNAL_SERVER_ERROR_BODY in mcaptcha::pages::errors - Rust

Struct mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY[][src]

struct INTERNAL_SERVER_ERROR_BODY {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

-
Examples
+INTERNAL_SERVER_ERROR_BODY in mcaptcha::pages::errors - Rust + +
struct INTERNAL_SERVER_ERROR_BODY {
+    __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

+
Examples

Basic usage:

let s = String::from("foo");
 
 assert_eq!("foo", s.as_str());
-

Returns this String’s capacity, in bytes.

-
Examples
+

Returns this String’s capacity, in bytes.

+
Examples

Basic usage:

let s = String::with_capacity(10);
 
 assert!(s.capacity() >= 10);
-

Returns a byte slice of this String’s contents.

-

The inverse of this method is from_utf8.

-
Examples
+

Returns a byte slice of this String’s contents.

+

The inverse of this method is from_utf8.

+
Examples

Basic usage:

let s = String::from("hello");
 
 assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes());
-

Returns the length of this String, in bytes, not chars or +

Returns the length of this String, in bytes, not chars or graphemes. In other words, it might not be what a human considers the length of the string.

-
Examples
+
Examples

Basic usage:

let a = String::from("foo");
@@ -34,8 +40,8 @@ length of the string.

let fancy_f = String::from("ƒoo"); assert_eq!(fancy_f.len(), 4); assert_eq!(fancy_f.chars().count(), 3);
-

Returns true if this String has a length of zero, and false otherwise.

-
Examples
+

Returns true if this String has a length of zero, and false otherwise.

+
Examples

Basic usage:

let mut v = String::new();
@@ -43,26 +49,1183 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Methods from Deref<Target = str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/errors/struct.UNKNOWN_ERROR_BODY.html b/mcaptcha/pages/errors/struct.UNKNOWN_ERROR_BODY.html index 42956591..7f4247e0 100644 --- a/mcaptcha/pages/errors/struct.UNKNOWN_ERROR_BODY.html +++ b/mcaptcha/pages/errors/struct.UNKNOWN_ERROR_BODY.html @@ -1,31 +1,37 @@ -UNKNOWN_ERROR_BODY in mcaptcha::pages::errors - Rust

Struct mcaptcha::pages::errors::UNKNOWN_ERROR_BODY[][src]

struct UNKNOWN_ERROR_BODY {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

-
Examples
+UNKNOWN_ERROR_BODY in mcaptcha::pages::errors - Rust + +
struct UNKNOWN_ERROR_BODY {
+    __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

+
Examples

Basic usage:

let s = String::from("foo");
 
 assert_eq!("foo", s.as_str());
-

Returns this String’s capacity, in bytes.

-
Examples
+

Returns this String’s capacity, in bytes.

+
Examples

Basic usage:

let s = String::with_capacity(10);
 
 assert!(s.capacity() >= 10);
-

Returns a byte slice of this String’s contents.

-

The inverse of this method is from_utf8.

-
Examples
+

Returns a byte slice of this String’s contents.

+

The inverse of this method is from_utf8.

+
Examples

Basic usage:

let s = String::from("hello");
 
 assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes());
-

Returns the length of this String, in bytes, not chars or +

Returns the length of this String, in bytes, not chars or graphemes. In other words, it might not be what a human considers the length of the string.

-
Examples
+
Examples

Basic usage:

let a = String::from("foo");
@@ -34,8 +40,8 @@ length of the string.

let fancy_f = String::from("ƒoo"); assert_eq!(fancy_f.len(), 4); assert_eq!(fancy_f.chars().count(), 3);
-

Returns true if this String has a length of zero, and false otherwise.

-
Examples
+

Returns true if this String has a length of zero, and false otherwise.

+
Examples

Basic usage:

let mut v = String::new();
@@ -43,26 +49,1183 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Methods from Deref<Target = str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/errors/struct.error.html b/mcaptcha/pages/errors/struct.error.html index c350f0b8..938dae2f 100644 --- a/mcaptcha/pages/errors/struct.error.html +++ b/mcaptcha/pages/errors/struct.error.html @@ -1,21 +1,28 @@ -error in mcaptcha::pages::errors - Rust

Struct mcaptcha::pages::errors::error[][src]

pub struct error;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +error in mcaptcha::pages::errors - Rust + +
pub struct error;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/fn.get_middleware.html b/mcaptcha/pages/fn.get_middleware.html new file mode 100644 index 00000000..43326301 --- /dev/null +++ b/mcaptcha/pages/fn.get_middleware.html @@ -0,0 +1,8 @@ +get_middleware in mcaptcha::pages - Rust + +
pub fn get_middleware() -> Authentication<Routes>
+ \ No newline at end of file diff --git a/mcaptcha/pages/fn.services.html b/mcaptcha/pages/fn.services.html index 9768b315..4b369ed0 100644 --- a/mcaptcha/pages/fn.services.html +++ b/mcaptcha/pages/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::pages - Rust

Function mcaptcha::pages::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::pages - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/pages/index.html b/mcaptcha/pages/index.html index 75fbcf46..08a80812 100644 --- a/mcaptcha/pages/index.html +++ b/mcaptcha/pages/index.html @@ -1,6 +1,11 @@ -mcaptcha::pages - Rust

Module mcaptcha::pages[][src]

Modules

-

Constants

-

Functions

-
- +mcaptcha::pages - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/constant.PAGE.html b/mcaptcha/pages/panel/constant.PAGE.html index f1b80c14..b468a886 100644 --- a/mcaptcha/pages/panel/constant.PAGE.html +++ b/mcaptcha/pages/panel/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::panel - Rust

Constant mcaptcha::pages::panel::PAGE[][src]

const PAGE: &str = "Dashboard";
- +PAGE in mcaptcha::pages::panel - Rust + +
+

Constant mcaptcha::pages::panel::PAGE

source · []
const PAGE: &str = "Dashboard";
\ No newline at end of file diff --git a/mcaptcha/pages/panel/fn.services.html b/mcaptcha/pages/panel/fn.services.html index 3038f84a..453d5ddd 100644 --- a/mcaptcha/pages/panel/fn.services.html +++ b/mcaptcha/pages/panel/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::pages::panel - Rust

Function mcaptcha::pages::panel::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::pages::panel - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/pages/panel/index.html b/mcaptcha/pages/panel/index.html index 2db296b2..ff5908f5 100644 --- a/mcaptcha/pages/panel/index.html +++ b/mcaptcha/pages/panel/index.html @@ -1,7 +1,12 @@ -mcaptcha::pages::panel - Rust

Module mcaptcha::pages::panel[][src]

Modules

-

Structs

-

Constants

-

Functions

-
- +mcaptcha::pages::panel - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/notifications/constant.PAGE.html b/mcaptcha/pages/panel/notifications/constant.PAGE.html index 25a27544..cca8f39a 100644 --- a/mcaptcha/pages/panel/notifications/constant.PAGE.html +++ b/mcaptcha/pages/panel/notifications/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::panel::notifications - Rust

Constant mcaptcha::pages::panel::notifications::PAGE[][src]

const PAGE: &str = "Notifications";
- +PAGE in mcaptcha::pages::panel::notifications - Rust + +
const PAGE: &str = "Notifications";
\ No newline at end of file diff --git a/mcaptcha/pages/panel/notifications/index.html b/mcaptcha/pages/panel/notifications/index.html index 187cf6e9..ba64a1a2 100644 --- a/mcaptcha/pages/panel/notifications/index.html +++ b/mcaptcha/pages/panel/notifications/index.html @@ -1,5 +1,10 @@ -mcaptcha::pages::panel::notifications - Rust

Module mcaptcha::pages::panel::notifications[][src]

Structs

-

Constants

-
- +mcaptcha::pages::panel::notifications - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/notifications/struct.IndexPage.html b/mcaptcha/pages/panel/notifications/struct.IndexPage.html index bc3f5de9..6d2d5db7 100644 --- a/mcaptcha/pages/panel/notifications/struct.IndexPage.html +++ b/mcaptcha/pages/panel/notifications/struct.IndexPage.html @@ -1,26 +1,33 @@ -IndexPage in mcaptcha::pages::panel::notifications - Rust

Struct mcaptcha::pages::panel::notifications::IndexPage[][src]

pub struct IndexPage {
-    n: Vec<Notification>,
-}

Fields

n: Vec<Notification>

notifications

-

Implementations

Trait Implementations

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +IndexPage in mcaptcha::pages::panel::notifications - Rust + +
pub struct IndexPage {
+    n: Vec<Notification>,
+}

Fields

n: Vec<Notification>

notifications

+

Implementations

Trait Implementations

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/notifications/struct.Notification.html b/mcaptcha/pages/panel/notifications/struct.Notification.html index 75eab7d4..87711f3f 100644 --- a/mcaptcha/pages/panel/notifications/struct.Notification.html +++ b/mcaptcha/pages/panel/notifications/struct.Notification.html @@ -1,28 +1,35 @@ -Notification in mcaptcha::pages::panel::notifications - Rust

Struct mcaptcha::pages::panel::notifications::Notification[][src]

pub struct Notification {
-    pub name: String,
-    pub heading: String,
-    pub message: String,
+Notification in mcaptcha::pages::panel::notifications - Rust
+    
+    
pub struct Notification {
+    pub name: String,
+    pub heading: String,
+    pub message: String,
     pub received: OffsetDateTime,
-    pub id: i32,
-}

Fields

name: Stringheading: Stringmessage: Stringreceived: OffsetDateTimeid: i32

Implementations

Trait Implementations

Performs the conversion.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- + pub id: i32, +}

Fields

name: Stringheading: Stringmessage: Stringreceived: OffsetDateTimeid: i32

Implementations

Trait Implementations

Performs the conversion.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/notifications/struct.notifications.html b/mcaptcha/pages/panel/notifications/struct.notifications.html index 0afce0fb..0d3faed7 100644 --- a/mcaptcha/pages/panel/notifications/struct.notifications.html +++ b/mcaptcha/pages/panel/notifications/struct.notifications.html @@ -1,21 +1,28 @@ -notifications in mcaptcha::pages::panel::notifications - Rust

Struct mcaptcha::pages::panel::notifications::notifications[][src]

pub struct notifications;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +notifications in mcaptcha::pages::panel::notifications - Rust + +
pub struct notifications;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/routes/index.html b/mcaptcha/pages/panel/routes/index.html index fa8de9e8..59b5a975 100644 --- a/mcaptcha/pages/panel/routes/index.html +++ b/mcaptcha/pages/panel/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::pages::panel::routes - Rust

Module mcaptcha::pages::panel::routes[][src]

Structs

-
- +mcaptcha::pages::panel::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/routes/struct.Panel.html b/mcaptcha/pages/panel/routes/struct.Panel.html index a8b345cc..2c14bb2a 100644 --- a/mcaptcha/pages/panel/routes/struct.Panel.html +++ b/mcaptcha/pages/panel/routes/struct.Panel.html @@ -1,26 +1,33 @@ -Panel in mcaptcha::pages::panel::routes - Rust

Struct mcaptcha::pages::panel::routes::Panel[][src]

pub struct Panel {
-    pub home: &'static str,
+Panel in mcaptcha::pages::panel::routes - Rust
+    
+    
pub struct Panel {
+    pub home: &'static str,
     pub sitekey: Sitekey,
-    pub notifications: &'static str,
+    pub notifications: &'static str,
     pub settings: Settings,
-}

Fields

home: &'static strsitekey: Sitekeynotifications: &'static strsettings: Settings

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Fields

home: &'static strsitekey: Sitekeynotifications: &'static strsettings: Settings

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/settings/constant.PAGE.html b/mcaptcha/pages/panel/settings/constant.PAGE.html index 09588fff..db4b3128 100644 --- a/mcaptcha/pages/panel/settings/constant.PAGE.html +++ b/mcaptcha/pages/panel/settings/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::panel::settings - Rust

Constant mcaptcha::pages::panel::settings::PAGE[][src]

const PAGE: &str = "Settings";
- +PAGE in mcaptcha::pages::panel::settings - Rust + +
const PAGE: &str = "Settings";
\ No newline at end of file diff --git a/mcaptcha/pages/panel/settings/fn.services.html b/mcaptcha/pages/panel/settings/fn.services.html index 4e1bfc72..5fee80d8 100644 --- a/mcaptcha/pages/panel/settings/fn.services.html +++ b/mcaptcha/pages/panel/settings/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::pages::panel::settings - Rust

Function mcaptcha::pages::panel::settings::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::pages::panel::settings - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/pages/panel/settings/index.html b/mcaptcha/pages/panel/settings/index.html index 776b0b55..34a825a1 100644 --- a/mcaptcha/pages/panel/settings/index.html +++ b/mcaptcha/pages/panel/settings/index.html @@ -1,7 +1,12 @@ -mcaptcha::pages::panel::settings - Rust

Module mcaptcha::pages::panel::settings[][src]

Modules

-

Structs

-

Constants

-

Functions

-
- +mcaptcha::pages::panel::settings - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/settings/routes/index.html b/mcaptcha/pages/panel/settings/routes/index.html index cd75b726..68869890 100644 --- a/mcaptcha/pages/panel/settings/routes/index.html +++ b/mcaptcha/pages/panel/settings/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::pages::panel::settings::routes - Rust

Module mcaptcha::pages::panel::settings::routes[][src]

Structs

-
- +mcaptcha::pages::panel::settings::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/settings/routes/struct.Settings.html b/mcaptcha/pages/panel/settings/routes/struct.Settings.html index c423f0e0..6550b17e 100644 --- a/mcaptcha/pages/panel/settings/routes/struct.Settings.html +++ b/mcaptcha/pages/panel/settings/routes/struct.Settings.html @@ -1,25 +1,32 @@ -Settings in mcaptcha::pages::panel::settings::routes - Rust

Struct mcaptcha::pages::panel::settings::routes::Settings[][src]

pub struct Settings {
-    pub home: &'static str,
-    pub delete_account: &'static str,
-    pub update_secret: &'static str,
-}

Fields

home: &'static strdelete_account: &'static strupdate_secret: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Settings in mcaptcha::pages::panel::settings::routes - Rust + +
pub struct Settings {
+    pub home: &'static str,
+    pub delete_account: &'static str,
+    pub update_secret: &'static str,
+}

Fields

home: &'static strdelete_account: &'static strupdate_secret: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/settings/struct.IndexPage.html b/mcaptcha/pages/panel/settings/struct.IndexPage.html index 345c6f88..4801f5cf 100644 --- a/mcaptcha/pages/panel/settings/struct.IndexPage.html +++ b/mcaptcha/pages/panel/settings/struct.IndexPage.html @@ -1,33 +1,39 @@ -IndexPage in mcaptcha::pages::panel::settings - Rust

Struct mcaptcha::pages::panel::settings::IndexPage[][src]

pub struct IndexPage<'a> {
-    email: Option<String>,
-    secret: String,
-    username: &'a str,
-}

Fields

email: Option<String>secret: Stringusername: &'a str

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +IndexPage in mcaptcha::pages::panel::settings - Rust + +
pub struct IndexPage<'a> {
+    email: Option<String>,
+    secret: String,
+    username: &'a str,
+}

Fields

email: Option<String>secret: Stringusername: &'a str

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/settings/struct.delete_account.html b/mcaptcha/pages/panel/settings/struct.delete_account.html index 3fafe25c..afd3228d 100644 --- a/mcaptcha/pages/panel/settings/struct.delete_account.html +++ b/mcaptcha/pages/panel/settings/struct.delete_account.html @@ -1,21 +1,28 @@ -delete_account in mcaptcha::pages::panel::settings - Rust

Struct mcaptcha::pages::panel::settings::delete_account[][src]

pub struct delete_account;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +delete_account in mcaptcha::pages::panel::settings - Rust + +
pub struct delete_account;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/settings/struct.settings.html b/mcaptcha/pages/panel/settings/struct.settings.html index b2b24164..7a7722e2 100644 --- a/mcaptcha/pages/panel/settings/struct.settings.html +++ b/mcaptcha/pages/panel/settings/struct.settings.html @@ -1,21 +1,28 @@ -settings in mcaptcha::pages::panel::settings - Rust

Struct mcaptcha::pages::panel::settings::settings[][src]

pub struct settings;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +settings in mcaptcha::pages::panel::settings - Rust + +
pub struct settings;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/settings/struct.update_secret.html b/mcaptcha/pages/panel/settings/struct.update_secret.html index 88e1443f..f28d5b56 100644 --- a/mcaptcha/pages/panel/settings/struct.update_secret.html +++ b/mcaptcha/pages/panel/settings/struct.update_secret.html @@ -1,21 +1,28 @@ -update_secret in mcaptcha::pages::panel::settings - Rust

Struct mcaptcha::pages::panel::settings::update_secret[][src]

pub struct update_secret;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +update_secret in mcaptcha::pages::panel::settings - Rust + +
pub struct update_secret;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/add/constant.PAGE.html b/mcaptcha/pages/panel/sitekey/add/constant.PAGE.html index 0f98167b..e648f57d 100644 --- a/mcaptcha/pages/panel/sitekey/add/constant.PAGE.html +++ b/mcaptcha/pages/panel/sitekey/add/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::panel::sitekey::add - Rust

Constant mcaptcha::pages::panel::sitekey::add::PAGE[][src]

const PAGE: &str = "Add Sitekey";
- +PAGE in mcaptcha::pages::panel::sitekey::add - Rust + +
const PAGE: &str = "Add Sitekey";
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/add/index.html b/mcaptcha/pages/panel/sitekey/add/index.html index e05e3cc0..c6d4da3d 100644 --- a/mcaptcha/pages/panel/sitekey/add/index.html +++ b/mcaptcha/pages/panel/sitekey/add/index.html @@ -1,5 +1,10 @@ -mcaptcha::pages::panel::sitekey::add - Rust

Module mcaptcha::pages::panel::sitekey::add[][src]

Structs

-

Constants

-
- +mcaptcha::pages::panel::sitekey::add - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/add/struct.ADVANCE_INDEX.html b/mcaptcha/pages/panel/sitekey/add/struct.ADVANCE_INDEX.html index 3e4fb641..d3a851bb 100644 --- a/mcaptcha/pages/panel/sitekey/add/struct.ADVANCE_INDEX.html +++ b/mcaptcha/pages/panel/sitekey/add/struct.ADVANCE_INDEX.html @@ -1,31 +1,37 @@ -ADVANCE_INDEX in mcaptcha::pages::panel::sitekey::add - Rust

Struct mcaptcha::pages::panel::sitekey::add::ADVANCE_INDEX[][src]

struct ADVANCE_INDEX {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

-
Examples
+ADVANCE_INDEX in mcaptcha::pages::panel::sitekey::add - Rust + +
struct ADVANCE_INDEX {
+    __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

+
Examples

Basic usage:

let s = String::from("foo");
 
 assert_eq!("foo", s.as_str());
-

Returns this String’s capacity, in bytes.

-
Examples
+

Returns this String’s capacity, in bytes.

+
Examples

Basic usage:

let s = String::with_capacity(10);
 
 assert!(s.capacity() >= 10);
-

Returns a byte slice of this String’s contents.

-

The inverse of this method is from_utf8.

-
Examples
+

Returns a byte slice of this String’s contents.

+

The inverse of this method is from_utf8.

+
Examples

Basic usage:

let s = String::from("hello");
 
 assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes());
-

Returns the length of this String, in bytes, not chars or +

Returns the length of this String, in bytes, not chars or graphemes. In other words, it might not be what a human considers the length of the string.

-
Examples
+
Examples

Basic usage:

let a = String::from("foo");
@@ -34,8 +40,8 @@ length of the string.

let fancy_f = String::from("ƒoo"); assert_eq!(fancy_f.len(), 4); assert_eq!(fancy_f.chars().count(), 3);
-

Returns true if this String has a length of zero, and false otherwise.

-
Examples
+

Returns true if this String has a length of zero, and false otherwise.

+
Examples

Basic usage:

let mut v = String::new();
@@ -43,26 +49,1183 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Methods from Deref<Target = str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/add/struct.AdvanceIndexPage.html b/mcaptcha/pages/panel/sitekey/add/struct.AdvanceIndexPage.html index aab1b90a..67d2823f 100644 --- a/mcaptcha/pages/panel/sitekey/add/struct.AdvanceIndexPage.html +++ b/mcaptcha/pages/panel/sitekey/add/struct.AdvanceIndexPage.html @@ -1,35 +1,41 @@ -AdvanceIndexPage in mcaptcha::pages::panel::sitekey::add - Rust

Struct mcaptcha::pages::panel::sitekey::add::AdvanceIndexPage[][src]

pub struct AdvanceIndexPage<'a> {
-    pub levels: usize,
-    pub form_title: &'a str,
-    pub form_description: &'a str,
-    pub form_duration: usize,
-}

Fields

levels: usizeform_title: &'a strform_description: &'a strform_duration: usize

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Returns the “default value” for a type. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +AdvanceIndexPage in mcaptcha::pages::panel::sitekey::add - Rust + +
pub struct AdvanceIndexPage<'a> {
+    pub levels: usize,
+    pub form_title: &'a str,
+    pub form_description: &'a str,
+    pub form_duration: usize,
+}

Fields

levels: usizeform_title: &'a strform_description: &'a strform_duration: usize

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Returns the “default value” for a type. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/add/struct.EASY_INDEX.html b/mcaptcha/pages/panel/sitekey/add/struct.EASY_INDEX.html index e5beaada..f411f8f8 100644 --- a/mcaptcha/pages/panel/sitekey/add/struct.EASY_INDEX.html +++ b/mcaptcha/pages/panel/sitekey/add/struct.EASY_INDEX.html @@ -1,31 +1,37 @@ -EASY_INDEX in mcaptcha::pages::panel::sitekey::add - Rust

Struct mcaptcha::pages::panel::sitekey::add::EASY_INDEX[][src]

struct EASY_INDEX {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

-
Examples
+EASY_INDEX in mcaptcha::pages::panel::sitekey::add - Rust + +
struct EASY_INDEX {
+    __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

+
Examples

Basic usage:

let s = String::from("foo");
 
 assert_eq!("foo", s.as_str());
-

Returns this String’s capacity, in bytes.

-
Examples
+

Returns this String’s capacity, in bytes.

+
Examples

Basic usage:

let s = String::with_capacity(10);
 
 assert!(s.capacity() >= 10);
-

Returns a byte slice of this String’s contents.

-

The inverse of this method is from_utf8.

-
Examples
+

Returns a byte slice of this String’s contents.

+

The inverse of this method is from_utf8.

+
Examples

Basic usage:

let s = String::from("hello");
 
 assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes());
-

Returns the length of this String, in bytes, not chars or +

Returns the length of this String, in bytes, not chars or graphemes. In other words, it might not be what a human considers the length of the string.

-
Examples
+
Examples

Basic usage:

let a = String::from("foo");
@@ -34,8 +40,8 @@ length of the string.

let fancy_f = String::from("ƒoo"); assert_eq!(fancy_f.len(), 4); assert_eq!(fancy_f.chars().count(), 3);
-

Returns true if this String has a length of zero, and false otherwise.

-
Examples
+

Returns true if this String has a length of zero, and false otherwise.

+
Examples

Basic usage:

let mut v = String::new();
@@ -43,26 +49,1183 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Methods from Deref<Target = str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/add/struct.EasyIndexPage.html b/mcaptcha/pages/panel/sitekey/add/struct.EasyIndexPage.html index da5dd4f2..be742e3e 100644 --- a/mcaptcha/pages/panel/sitekey/add/struct.EasyIndexPage.html +++ b/mcaptcha/pages/panel/sitekey/add/struct.EasyIndexPage.html @@ -1,36 +1,42 @@ -EasyIndexPage in mcaptcha::pages::panel::sitekey::add - Rust

Struct mcaptcha::pages::panel::sitekey::add::EasyIndexPage[][src]

pub struct EasyIndexPage<'a> {
-    pub form_description: &'a str,
-    pub form_title: &'a str,
-    pub peak_sustainable_traffic: Option<usize>,
-    pub avg_traffic: Option<usize>,
-    pub broke_my_site_traffic: Option<usize>,
-}

Fields

form_description: &'a strform_title: &'a strpeak_sustainable_traffic: Option<usize>avg_traffic: Option<usize>broke_my_site_traffic: Option<usize>

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Returns the “default value” for a type. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +EasyIndexPage in mcaptcha::pages::panel::sitekey::add - Rust + +
pub struct EasyIndexPage<'a> {
+    pub form_description: &'a str,
+    pub form_title: &'a str,
+    pub peak_sustainable_traffic: Option<usize>,
+    pub avg_traffic: Option<usize>,
+    pub broke_my_site_traffic: Option<usize>,
+}

Fields

form_description: &'a strform_title: &'a strpeak_sustainable_traffic: Option<usize>avg_traffic: Option<usize>broke_my_site_traffic: Option<usize>

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Returns the “default value” for a type. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/add/struct.advance.html b/mcaptcha/pages/panel/sitekey/add/struct.advance.html index 7b352b61..6afb090b 100644 --- a/mcaptcha/pages/panel/sitekey/add/struct.advance.html +++ b/mcaptcha/pages/panel/sitekey/add/struct.advance.html @@ -1,21 +1,28 @@ -advance in mcaptcha::pages::panel::sitekey::add - Rust

Struct mcaptcha::pages::panel::sitekey::add::advance[][src]

pub struct advance;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +advance in mcaptcha::pages::panel::sitekey::add - Rust + +
pub struct advance;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/add/struct.easy.html b/mcaptcha/pages/panel/sitekey/add/struct.easy.html index 5d84c2a3..84772588 100644 --- a/mcaptcha/pages/panel/sitekey/add/struct.easy.html +++ b/mcaptcha/pages/panel/sitekey/add/struct.easy.html @@ -1,21 +1,28 @@ -easy in mcaptcha::pages::panel::sitekey::add - Rust

Struct mcaptcha::pages::panel::sitekey::add::easy[][src]

pub struct easy;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +easy in mcaptcha::pages::panel::sitekey::add - Rust + +
pub struct easy;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/delete/index.html b/mcaptcha/pages/panel/sitekey/delete/index.html index a0d84d11..330d31db 100644 --- a/mcaptcha/pages/panel/sitekey/delete/index.html +++ b/mcaptcha/pages/panel/sitekey/delete/index.html @@ -1,4 +1,9 @@ -mcaptcha::pages::panel::sitekey::delete - Rust

Module mcaptcha::pages::panel::sitekey::delete[][src]

Structs

-
- +mcaptcha::pages::panel::sitekey::delete - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/delete/struct.delete_sitekey.html b/mcaptcha/pages/panel/sitekey/delete/struct.delete_sitekey.html index 95c18695..a0523ba1 100644 --- a/mcaptcha/pages/panel/sitekey/delete/struct.delete_sitekey.html +++ b/mcaptcha/pages/panel/sitekey/delete/struct.delete_sitekey.html @@ -1,21 +1,28 @@ -delete_sitekey in mcaptcha::pages::panel::sitekey::delete - Rust

Struct mcaptcha::pages::panel::sitekey::delete::delete_sitekey[][src]

pub struct delete_sitekey;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +delete_sitekey in mcaptcha::pages::panel::sitekey::delete - Rust + +
pub struct delete_sitekey;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/edit/constant.PAGE.html b/mcaptcha/pages/panel/sitekey/edit/constant.PAGE.html index a426fe48..ba0f53ba 100644 --- a/mcaptcha/pages/panel/sitekey/edit/constant.PAGE.html +++ b/mcaptcha/pages/panel/sitekey/edit/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::panel::sitekey::edit - Rust

Constant mcaptcha::pages::panel::sitekey::edit::PAGE[][src]

const PAGE: &str = "Edit Sitekey";
- +PAGE in mcaptcha::pages::panel::sitekey::edit - Rust + +
const PAGE: &str = "Edit Sitekey";
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/edit/index.html b/mcaptcha/pages/panel/sitekey/edit/index.html index de2667c3..1dc39532 100644 --- a/mcaptcha/pages/panel/sitekey/edit/index.html +++ b/mcaptcha/pages/panel/sitekey/edit/index.html @@ -1,7 +1,12 @@ -mcaptcha::pages::panel::sitekey::edit - Rust

Module mcaptcha::pages::panel::sitekey::edit[][src]

Structs

+mcaptcha::pages::panel::sitekey::edit - Rust + +

Structs

route handler that renders individual views for sitekeys

route handler that renders individual views for sitekeys

-

Constants

-
- +

Constants

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/edit/struct.AdvanceEditPage.html b/mcaptcha/pages/panel/sitekey/edit/struct.AdvanceEditPage.html index 7cae1104..70779a9e 100644 --- a/mcaptcha/pages/panel/sitekey/edit/struct.AdvanceEditPage.html +++ b/mcaptcha/pages/panel/sitekey/edit/struct.AdvanceEditPage.html @@ -1,34 +1,40 @@ -AdvanceEditPage in mcaptcha::pages::panel::sitekey::edit - Rust

Struct mcaptcha::pages::panel::sitekey::edit::AdvanceEditPage[][src]

struct AdvanceEditPage {
-    duration: u32,
-    name: String,
-    key: String,
-    levels: Vec<Level>,
-}

Fields

duration: u32name: Stringkey: Stringlevels: Vec<Level>

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +AdvanceEditPage in mcaptcha::pages::panel::sitekey::edit - Rust + +
struct AdvanceEditPage {
+    duration: u32,
+    name: String,
+    key: String,
+    levels: Vec<Level>,
+}

Fields

duration: u32name: Stringkey: Stringlevels: Vec<Level>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/edit/struct.EasyEditPage.html b/mcaptcha/pages/panel/sitekey/edit/struct.EasyEditPage.html index 1d53ca45..0c40fce1 100644 --- a/mcaptcha/pages/panel/sitekey/edit/struct.EasyEditPage.html +++ b/mcaptcha/pages/panel/sitekey/edit/struct.EasyEditPage.html @@ -1,33 +1,39 @@ -EasyEditPage in mcaptcha::pages::panel::sitekey::edit - Rust

Struct mcaptcha::pages::panel::sitekey::edit::EasyEditPage[][src]

pub struct EasyEditPage<'a> {
-    pub form_title: &'a str,
+EasyEditPage in mcaptcha::pages::panel::sitekey::edit - Rust
+    
+    
pub struct EasyEditPage<'a> {
+    pub form_title: &'a str,
     pub pattern: TrafficPattern,
-    pub key: String,
-}

Fields

form_title: &'a strpattern: TrafficPatternkey: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- + pub key: String, +}

Fields

form_title: &'a strpattern: TrafficPatternkey: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/edit/struct.Level.html b/mcaptcha/pages/panel/sitekey/edit/struct.Level.html index 65b8f903..c68dbbaf 100644 --- a/mcaptcha/pages/panel/sitekey/edit/struct.Level.html +++ b/mcaptcha/pages/panel/sitekey/edit/struct.Level.html @@ -1,30 +1,36 @@ -Level in mcaptcha::pages::panel::sitekey::edit - Rust

Struct mcaptcha::pages::panel::sitekey::edit::Level[][src]

struct Level {
-    difficulty_factor: i32,
-    visitor_threshold: i32,
-}

Fields

difficulty_factor: i32visitor_threshold: i32

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Level in mcaptcha::pages::panel::sitekey::edit - Rust + +
struct Level {
+    difficulty_factor: i32,
+    visitor_threshold: i32,
+}

Fields

difficulty_factor: i32visitor_threshold: i32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/edit/struct.McaptchaConfig.html b/mcaptcha/pages/panel/sitekey/edit/struct.McaptchaConfig.html index 16f20015..6748793b 100644 --- a/mcaptcha/pages/panel/sitekey/edit/struct.McaptchaConfig.html +++ b/mcaptcha/pages/panel/sitekey/edit/struct.McaptchaConfig.html @@ -1,31 +1,37 @@ -McaptchaConfig in mcaptcha::pages::panel::sitekey::edit - Rust

Struct mcaptcha::pages::panel::sitekey::edit::McaptchaConfig[][src]

struct McaptchaConfig {
-    config_id: i32,
-    duration: i32,
-    name: String,
-}

Fields

config_id: i32duration: i32name: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +McaptchaConfig in mcaptcha::pages::panel::sitekey::edit - Rust + +
struct McaptchaConfig {
+    config_id: i32,
+    duration: i32,
+    name: String,
+}

Fields

config_id: i32duration: i32name: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/edit/struct.advance.html b/mcaptcha/pages/panel/sitekey/edit/struct.advance.html index 59d794f4..a1cc9fe6 100644 --- a/mcaptcha/pages/panel/sitekey/edit/struct.advance.html +++ b/mcaptcha/pages/panel/sitekey/edit/struct.advance.html @@ -1,22 +1,29 @@ -advance in mcaptcha::pages::panel::sitekey::edit - Rust

Struct mcaptcha::pages::panel::sitekey::edit::advance[][src]

pub struct advance;
Expand description

route handler that renders individual views for sitekeys

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +advance in mcaptcha::pages::panel::sitekey::edit - Rust + +
pub struct advance;
Expand description

route handler that renders individual views for sitekeys

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/edit/struct.easy.html b/mcaptcha/pages/panel/sitekey/edit/struct.easy.html index a2d1d1ab..51076d67 100644 --- a/mcaptcha/pages/panel/sitekey/edit/struct.easy.html +++ b/mcaptcha/pages/panel/sitekey/edit/struct.easy.html @@ -1,22 +1,29 @@ -easy in mcaptcha::pages::panel::sitekey::edit - Rust

Struct mcaptcha::pages::panel::sitekey::edit::easy[][src]

pub struct easy;
Expand description

route handler that renders individual views for sitekeys

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +easy in mcaptcha::pages::panel::sitekey::edit - Rust + +
pub struct easy;
Expand description

route handler that renders individual views for sitekeys

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/fn.services.html b/mcaptcha/pages/panel/sitekey/fn.services.html index 34d7d01f..7fe90bd0 100644 --- a/mcaptcha/pages/panel/sitekey/fn.services.html +++ b/mcaptcha/pages/panel/sitekey/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::pages::panel::sitekey - Rust

Function mcaptcha::pages::panel::sitekey::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::pages::panel::sitekey - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/index.html b/mcaptcha/pages/panel/sitekey/index.html index a38b5c88..fb8fa632 100644 --- a/mcaptcha/pages/panel/sitekey/index.html +++ b/mcaptcha/pages/panel/sitekey/index.html @@ -1,5 +1,10 @@ -mcaptcha::pages::panel::sitekey - Rust

Module mcaptcha::pages::panel::sitekey[][src]

Modules

-

Functions

-
- +mcaptcha::pages::panel::sitekey - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/list/constant.PAGE.html b/mcaptcha/pages/panel/sitekey/list/constant.PAGE.html index 75ce433d..891e156b 100644 --- a/mcaptcha/pages/panel/sitekey/list/constant.PAGE.html +++ b/mcaptcha/pages/panel/sitekey/list/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::panel::sitekey::list - Rust

Constant mcaptcha::pages::panel::sitekey::list::PAGE[][src]

const PAGE: &str = "SiteKeys";
- +PAGE in mcaptcha::pages::panel::sitekey::list - Rust + +
const PAGE: &str = "SiteKeys";
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/list/fn.get_list_sitekeys.html b/mcaptcha/pages/panel/sitekey/list/fn.get_list_sitekeys.html index f861beee..f72b8f0a 100644 --- a/mcaptcha/pages/panel/sitekey/list/fn.get_list_sitekeys.html +++ b/mcaptcha/pages/panel/sitekey/list/fn.get_list_sitekeys.html @@ -1,4 +1,9 @@ -get_list_sitekeys in mcaptcha::pages::panel::sitekey::list - Rust

Function mcaptcha::pages::panel::sitekey::list::get_list_sitekeys[][src]

pub async fn get_list_sitekeys(
    data: &AppData,
    id: &Identity
) -> Result<Vec<MCaptchaDetails>, PageError>
Expand description

utility function to get a list of all sitekeys that a user owns

-
- +get_list_sitekeys in mcaptcha::pages::panel::sitekey::list - Rust + +
pub async fn get_list_sitekeys(
    data: &AppData,
    id: &Identity
) -> Result<Vec<MCaptchaDetails>, PageError>
Expand description

utility function to get a list of all sitekeys that a user owns

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/list/index.html b/mcaptcha/pages/panel/sitekey/list/index.html index 553bc97a..32b98170 100644 --- a/mcaptcha/pages/panel/sitekey/list/index.html +++ b/mcaptcha/pages/panel/sitekey/list/index.html @@ -1,9 +1,14 @@ -mcaptcha::pages::panel::sitekey::list - Rust

Module mcaptcha::pages::panel::sitekey::list[][src]

Structs

+mcaptcha::pages::panel::sitekey::list - Rust + +

Structs

render a list of all sitekeys that a user has

-

Constants

-

Functions

+

Constants

+

Functions

utility function to get a list of all sitekeys that a user owns

-

Type Definitions

-
- +

Type Definitions

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/list/struct.IndexPage.html b/mcaptcha/pages/panel/sitekey/list/struct.IndexPage.html index 274b7d87..5c1baaf2 100644 --- a/mcaptcha/pages/panel/sitekey/list/struct.IndexPage.html +++ b/mcaptcha/pages/panel/sitekey/list/struct.IndexPage.html @@ -1,31 +1,37 @@ -IndexPage in mcaptcha::pages::panel::sitekey::list - Rust

Struct mcaptcha::pages::panel::sitekey::list::IndexPage[][src]

pub struct IndexPage {
-    sitekeys: Vec<MCaptchaDetails>,
-}

Fields

sitekeys: Vec<MCaptchaDetails>

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +IndexPage in mcaptcha::pages::panel::sitekey::list - Rust + +
pub struct IndexPage {
+    sitekeys: Vec<MCaptchaDetails>,
+}

Fields

sitekeys: Vec<MCaptchaDetails>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/list/struct.list_sitekeys.html b/mcaptcha/pages/panel/sitekey/list/struct.list_sitekeys.html index 10b5a6fe..592949ac 100644 --- a/mcaptcha/pages/panel/sitekey/list/struct.list_sitekeys.html +++ b/mcaptcha/pages/panel/sitekey/list/struct.list_sitekeys.html @@ -1,22 +1,29 @@ -list_sitekeys in mcaptcha::pages::panel::sitekey::list - Rust

Struct mcaptcha::pages::panel::sitekey::list::list_sitekeys[][src]

pub struct list_sitekeys;
Expand description

render a list of all sitekeys that a user has

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +list_sitekeys in mcaptcha::pages::panel::sitekey::list - Rust + +
pub struct list_sitekeys;
Expand description

render a list of all sitekeys that a user has

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/list/type.SiteKeys.html b/mcaptcha/pages/panel/sitekey/list/type.SiteKeys.html index 97672ef6..701c3b8b 100644 --- a/mcaptcha/pages/panel/sitekey/list/type.SiteKeys.html +++ b/mcaptcha/pages/panel/sitekey/list/type.SiteKeys.html @@ -1,3 +1,8 @@ -SiteKeys in mcaptcha::pages::panel::sitekey::list - Rust

Type Definition mcaptcha::pages::panel::sitekey::list::SiteKeys[][src]

pub type SiteKeys = Vec<MCaptchaDetails>;
- +SiteKeys in mcaptcha::pages::panel::sitekey::list - Rust + +
+

Type Definition mcaptcha::pages::panel::sitekey::list::SiteKeys

source · []
pub type SiteKeys = Vec<MCaptchaDetails>;
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/routes/index.html b/mcaptcha/pages/panel/sitekey/routes/index.html index a6205db8..afe30236 100644 --- a/mcaptcha/pages/panel/sitekey/routes/index.html +++ b/mcaptcha/pages/panel/sitekey/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::pages::panel::sitekey::routes - Rust

Module mcaptcha::pages::panel::sitekey::routes[][src]

Structs

-
- +mcaptcha::pages::panel::sitekey::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/routes/struct.Sitekey.html b/mcaptcha/pages/panel/sitekey/routes/struct.Sitekey.html index 27d5189b..9d8d08ea 100644 --- a/mcaptcha/pages/panel/sitekey/routes/struct.Sitekey.html +++ b/mcaptcha/pages/panel/sitekey/routes/struct.Sitekey.html @@ -1,29 +1,36 @@ -Sitekey in mcaptcha::pages::panel::sitekey::routes - Rust

Struct mcaptcha::pages::panel::sitekey::routes::Sitekey[][src]

pub struct Sitekey {
-    pub list: &'static str,
-    pub add_easy: &'static str,
-    pub add_advance: &'static str,
-    pub view: &'static str,
-    pub edit_easy: &'static str,
-    pub edit_advance: &'static str,
-    pub delete: &'static str,
-}

Fields

list: &'static stradd_easy: &'static stradd_advance: &'static strview: &'static stredit_easy: &'static stredit_advance: &'static strdelete: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Sitekey in mcaptcha::pages::panel::sitekey::routes - Rust + +
pub struct Sitekey {
+    pub list: &'static str,
+    pub add_easy: &'static str,
+    pub add_advance: &'static str,
+    pub view: &'static str,
+    pub edit_easy: &'static str,
+    pub edit_advance: &'static str,
+    pub delete: &'static str,
+}

Fields

list: &'static stradd_easy: &'static stradd_advance: &'static strview: &'static stredit_easy: &'static stredit_advance: &'static strdelete: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/view/constant.PAGE.html b/mcaptcha/pages/panel/sitekey/view/constant.PAGE.html index 96e4935a..c76837d6 100644 --- a/mcaptcha/pages/panel/sitekey/view/constant.PAGE.html +++ b/mcaptcha/pages/panel/sitekey/view/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::pages::panel::sitekey::view - Rust

Constant mcaptcha::pages::panel::sitekey::view::PAGE[][src]

const PAGE: &str = "SiteKeys";
- +PAGE in mcaptcha::pages::panel::sitekey::view - Rust + +
const PAGE: &str = "SiteKeys";
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/view/index.html b/mcaptcha/pages/panel/sitekey/view/index.html index 004092c6..bfac4a43 100644 --- a/mcaptcha/pages/panel/sitekey/view/index.html +++ b/mcaptcha/pages/panel/sitekey/view/index.html @@ -1,6 +1,11 @@ -mcaptcha::pages::panel::sitekey::view - Rust

Module mcaptcha::pages::panel::sitekey::view[][src]

Structs

+mcaptcha::pages::panel::sitekey::view - Rust + +

Structs

route handler that renders individual views for sitekeys

-

Constants

-
- +

Constants

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/view/struct.IndexPage.html b/mcaptcha/pages/panel/sitekey/view/struct.IndexPage.html index 60bb3d9a..8f33c67a 100644 --- a/mcaptcha/pages/panel/sitekey/view/struct.IndexPage.html +++ b/mcaptcha/pages/panel/sitekey/view/struct.IndexPage.html @@ -1,35 +1,41 @@ -IndexPage in mcaptcha::pages::panel::sitekey::view - Rust

Struct mcaptcha::pages::panel::sitekey::view::IndexPage[][src]

struct IndexPage {
-    duration: u32,
-    name: String,
-    key: String,
-    levels: Vec<Level>,
+IndexPage in mcaptcha::pages::panel::sitekey::view - Rust
+    
+    
struct IndexPage {
+    duration: u32,
+    name: String,
+    key: String,
+    levels: Vec<Level>,
     stats: Stats,
-}

Fields

duration: u32name: Stringkey: Stringlevels: Vec<Level>stats: Stats

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Fields

duration: u32name: Stringkey: Stringlevels: Vec<Level>stats: Stats

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/view/struct.Level.html b/mcaptcha/pages/panel/sitekey/view/struct.Level.html index 9b2c221c..e22f8962 100644 --- a/mcaptcha/pages/panel/sitekey/view/struct.Level.html +++ b/mcaptcha/pages/panel/sitekey/view/struct.Level.html @@ -1,30 +1,36 @@ -Level in mcaptcha::pages::panel::sitekey::view - Rust

Struct mcaptcha::pages::panel::sitekey::view::Level[][src]

struct Level {
-    difficulty_factor: i32,
-    visitor_threshold: i32,
-}

Fields

difficulty_factor: i32visitor_threshold: i32

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Level in mcaptcha::pages::panel::sitekey::view - Rust + +
struct Level {
+    difficulty_factor: i32,
+    visitor_threshold: i32,
+}

Fields

difficulty_factor: i32visitor_threshold: i32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/view/struct.McaptchaConfig.html b/mcaptcha/pages/panel/sitekey/view/struct.McaptchaConfig.html index 53675e7c..a0c636e2 100644 --- a/mcaptcha/pages/panel/sitekey/view/struct.McaptchaConfig.html +++ b/mcaptcha/pages/panel/sitekey/view/struct.McaptchaConfig.html @@ -1,31 +1,37 @@ -McaptchaConfig in mcaptcha::pages::panel::sitekey::view - Rust

Struct mcaptcha::pages::panel::sitekey::view::McaptchaConfig[][src]

struct McaptchaConfig {
-    config_id: i32,
-    duration: i32,
-    name: String,
-}

Fields

config_id: i32duration: i32name: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +McaptchaConfig in mcaptcha::pages::panel::sitekey::view - Rust + +
struct McaptchaConfig {
+    config_id: i32,
+    duration: i32,
+    name: String,
+}

Fields

config_id: i32duration: i32name: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/view/struct.view_sitekey.html b/mcaptcha/pages/panel/sitekey/view/struct.view_sitekey.html index aac10207..c97cc480 100644 --- a/mcaptcha/pages/panel/sitekey/view/struct.view_sitekey.html +++ b/mcaptcha/pages/panel/sitekey/view/struct.view_sitekey.html @@ -1,22 +1,29 @@ -view_sitekey in mcaptcha::pages::panel::sitekey::view - Rust

Struct mcaptcha::pages::panel::sitekey::view::view_sitekey[][src]

pub struct view_sitekey;
Expand description

route handler that renders individual views for sitekeys

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +view_sitekey in mcaptcha::pages::panel::sitekey::view - Rust + +
pub struct view_sitekey;
Expand description

route handler that renders individual views for sitekeys

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/struct.IndexPage.html b/mcaptcha/pages/panel/struct.IndexPage.html index 8c0ba104..8e814a7d 100644 --- a/mcaptcha/pages/panel/struct.IndexPage.html +++ b/mcaptcha/pages/panel/struct.IndexPage.html @@ -1,31 +1,37 @@ -IndexPage in mcaptcha::pages::panel - Rust

Struct mcaptcha::pages::panel::IndexPage[][src]

pub struct IndexPage {
-    sitekeys: Vec<MCaptchaDetails>,
-}

Fields

sitekeys: Vec<MCaptchaDetails>

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +IndexPage in mcaptcha::pages::panel - Rust + +
pub struct IndexPage {
+    sitekeys: Vec<MCaptchaDetails>,
+}

Fields

sitekeys: Vec<MCaptchaDetails>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/panel/struct.panel.html b/mcaptcha/pages/panel/struct.panel.html index 7cd97793..6eac0558 100644 --- a/mcaptcha/pages/panel/struct.panel.html +++ b/mcaptcha/pages/panel/struct.panel.html @@ -1,21 +1,28 @@ -panel in mcaptcha::pages::panel - Rust

Struct mcaptcha::pages::panel::panel[][src]

pub struct panel;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +panel in mcaptcha::pages::panel - Rust + +
pub struct panel;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/routes/constant.ROUTES.html b/mcaptcha/pages/routes/constant.ROUTES.html index bb35752a..a4a27e13 100644 --- a/mcaptcha/pages/routes/constant.ROUTES.html +++ b/mcaptcha/pages/routes/constant.ROUTES.html @@ -1,3 +1,8 @@ -ROUTES in mcaptcha::pages::routes - Rust

Constant mcaptcha::pages::routes::ROUTES[][src]

pub const ROUTES: Routes;
- +ROUTES in mcaptcha::pages::routes - Rust + +
pub const ROUTES: Routes;
\ No newline at end of file diff --git a/mcaptcha/pages/routes/index.html b/mcaptcha/pages/routes/index.html index e41979c5..cf3eddf2 100644 --- a/mcaptcha/pages/routes/index.html +++ b/mcaptcha/pages/routes/index.html @@ -1,5 +1,10 @@ -mcaptcha::pages::routes - Rust

Module mcaptcha::pages::routes[][src]

Structs

-

Constants

-
- +mcaptcha::pages::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/routes/struct.Routes.html b/mcaptcha/pages/routes/struct.Routes.html index fa6f11df..151b2f70 100644 --- a/mcaptcha/pages/routes/struct.Routes.html +++ b/mcaptcha/pages/routes/struct.Routes.html @@ -1,32 +1,39 @@ -Routes in mcaptcha::pages::routes - Rust

Struct mcaptcha::pages::routes::Routes[][src]

pub struct Routes {
-    pub home: &'static str,
+Routes in mcaptcha::pages::routes - Rust
+    
+    
pub struct Routes {
+    pub home: &'static str,
     pub auth: Auth,
     pub panel: Panel,
     pub errors: Errors,
-    pub about: &'static str,
-    pub sitemap: &'static str,
-    pub thanks: &'static str,
-    pub donate: &'static str,
-    pub security: &'static str,
-    pub privacy: &'static str,
-}

Fields

home: &'static strauth: Authpanel: Panelerrors: Errorsabout: &'static strsitemap: &'static strthanks: &'static strdonate: &'static strsecurity: &'static strprivacy: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- + pub about: &'static str, + pub sitemap: &'static str, + pub thanks: &'static str, + pub donate: &'static str, + pub security: &'static str, + pub privacy: &'static str, +}

Fields

home: &'static strauth: Authpanel: Panelerrors: Errorsabout: &'static strsitemap: &'static strthanks: &'static strdonate: &'static strsecurity: &'static strprivacy: &'static str

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/sidebar-items.js b/mcaptcha/pages/sidebar-items.js index 48e49d79..b9628bb1 100644 --- a/mcaptcha/pages/sidebar-items.js +++ b/mcaptcha/pages/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"constant":[["NAME",""]],"fn":[["services",""]],"mod":[["auth",""],["errors",""],["panel",""],["routes",""],["sitemap",""]]}); \ No newline at end of file +initSidebarItems({"constant":[["NAME",""]],"fn":[["get_middleware",""],["services",""]],"mod":[["auth",""],["errors",""],["panel",""],["routes",""],["sitemap",""]]}); \ No newline at end of file diff --git a/mcaptcha/pages/sitemap/index.html b/mcaptcha/pages/sitemap/index.html index 43333311..e0b34a47 100644 --- a/mcaptcha/pages/sitemap/index.html +++ b/mcaptcha/pages/sitemap/index.html @@ -1,4 +1,9 @@ -mcaptcha::pages::sitemap - Rust

Module mcaptcha::pages::sitemap[][src]

Structs

-
- +mcaptcha::pages::sitemap - Rust + +
\ No newline at end of file diff --git a/mcaptcha/pages/sitemap/struct.INDEX.html b/mcaptcha/pages/sitemap/struct.INDEX.html index 1360072a..7d2a6007 100644 --- a/mcaptcha/pages/sitemap/struct.INDEX.html +++ b/mcaptcha/pages/sitemap/struct.INDEX.html @@ -1,31 +1,37 @@ -INDEX in mcaptcha::pages::sitemap - Rust

Struct mcaptcha::pages::sitemap::INDEX[][src]

struct INDEX {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

-
Examples
+INDEX in mcaptcha::pages::sitemap - Rust + +
struct INDEX {
+    __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

+
Examples

Basic usage:

let s = String::from("foo");
 
 assert_eq!("foo", s.as_str());
-

Returns this String’s capacity, in bytes.

-
Examples
+

Returns this String’s capacity, in bytes.

+
Examples

Basic usage:

let s = String::with_capacity(10);
 
 assert!(s.capacity() >= 10);
-

Returns a byte slice of this String’s contents.

-

The inverse of this method is from_utf8.

-
Examples
+

Returns a byte slice of this String’s contents.

+

The inverse of this method is from_utf8.

+
Examples

Basic usage:

let s = String::from("hello");
 
 assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes());
-

Returns the length of this String, in bytes, not chars or +

Returns the length of this String, in bytes, not chars or graphemes. In other words, it might not be what a human considers the length of the string.

-
Examples
+
Examples

Basic usage:

let a = String::from("foo");
@@ -34,8 +40,8 @@ length of the string.

let fancy_f = String::from("ƒoo"); assert_eq!(fancy_f.len(), 4); assert_eq!(fancy_f.chars().count(), 3);
-

Returns true if this String has a length of zero, and false otherwise.

-
Examples
+

Returns true if this String has a length of zero, and false otherwise.

+
Examples

Basic usage:

let mut v = String::new();
@@ -43,26 +49,1183 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Methods from Deref<Target = str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/sitemap/struct.IndexPage.html b/mcaptcha/pages/sitemap/struct.IndexPage.html index 939c578e..bd3833c4 100644 --- a/mcaptcha/pages/sitemap/struct.IndexPage.html +++ b/mcaptcha/pages/sitemap/struct.IndexPage.html @@ -1,33 +1,39 @@ -IndexPage in mcaptcha::pages::sitemap - Rust

Struct mcaptcha::pages::sitemap::IndexPage[][src]

struct IndexPage {
-    urls: [&'static str; 7],
-    domain: &'static str,
-}

Fields

urls: [&'static str; 7]domain: &'static str

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Returns the “default value” for a type. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +IndexPage in mcaptcha::pages::sitemap - Rust + +
struct IndexPage {
+    urls: [&'static str; 7],
+    domain: &'static str,
+}

Fields

urls: [&'static str; 7]domain: &'static str

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Returns the “default value” for a type. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/pages/sitemap/struct.sitemap.html b/mcaptcha/pages/sitemap/struct.sitemap.html index 14c73c70..88089004 100644 --- a/mcaptcha/pages/sitemap/struct.sitemap.html +++ b/mcaptcha/pages/sitemap/struct.sitemap.html @@ -1,21 +1,28 @@ -sitemap in mcaptcha::pages::sitemap - Rust

Struct mcaptcha::pages::sitemap::sitemap[][src]

pub struct sitemap;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +sitemap in mcaptcha::pages::sitemap - Rust + +
pub struct sitemap;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/routes/fn.services.html b/mcaptcha/routes/fn.services.html index d8d68987..f3f9b9db 100644 --- a/mcaptcha/routes/fn.services.html +++ b/mcaptcha/routes/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::routes - Rust

Function mcaptcha::routes::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::routes - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/routes/index.html b/mcaptcha/routes/index.html index d7f89b83..76f11197 100644 --- a/mcaptcha/routes/index.html +++ b/mcaptcha/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::routes - Rust

Module mcaptcha::routes[][src]

Functions

-
- +mcaptcha::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/settings/fn.check_url.html b/mcaptcha/settings/fn.check_url.html index b8d652eb..5ec937a7 100644 --- a/mcaptcha/settings/fn.check_url.html +++ b/mcaptcha/settings/fn.check_url.html @@ -1,3 +1,8 @@ -check_url in mcaptcha::settings - Rust

Function mcaptcha::settings::check_url[][src]

fn check_url(s: &Config)
- +check_url in mcaptcha::settings - Rust + +
fn check_url(s: &Config)
\ No newline at end of file diff --git a/mcaptcha/settings/fn.set_database_url.html b/mcaptcha/settings/fn.set_database_url.html index 021d2788..8ca448db 100644 --- a/mcaptcha/settings/fn.set_database_url.html +++ b/mcaptcha/settings/fn.set_database_url.html @@ -1,3 +1,8 @@ -set_database_url in mcaptcha::settings - Rust

Function mcaptcha::settings::set_database_url[][src]

fn set_database_url(s: &mut Config)
- +set_database_url in mcaptcha::settings - Rust + +
fn set_database_url(s: &mut Config)
\ No newline at end of file diff --git a/mcaptcha/settings/fn.set_from_database_url.html b/mcaptcha/settings/fn.set_from_database_url.html index 9fa6af09..44272db8 100644 --- a/mcaptcha/settings/fn.set_from_database_url.html +++ b/mcaptcha/settings/fn.set_from_database_url.html @@ -1,3 +1,8 @@ -set_from_database_url in mcaptcha::settings - Rust

Function mcaptcha::settings::set_from_database_url[][src]

fn set_from_database_url(s: &mut Config, database_conf: &DatabaseBuilder)
- +set_from_database_url in mcaptcha::settings - Rust + +
fn set_from_database_url(s: &mut Config, database_conf: &DatabaseBuilder)
\ No newline at end of file diff --git a/mcaptcha/settings/index.html b/mcaptcha/settings/index.html index 6c65bc58..e5142ea5 100644 --- a/mcaptcha/settings/index.html +++ b/mcaptcha/settings/index.html @@ -1,5 +1,10 @@ -mcaptcha::settings - Rust

Module mcaptcha::settings[][src]

Structs

-

Functions

-
- +mcaptcha::settings - Rust + +
\ No newline at end of file diff --git a/mcaptcha/settings/struct.Captcha.html b/mcaptcha/settings/struct.Captcha.html index 463af35c..c11f9a47 100644 --- a/mcaptcha/settings/struct.Captcha.html +++ b/mcaptcha/settings/struct.Captcha.html @@ -1,33 +1,39 @@ -Captcha in mcaptcha::settings - Rust

Struct mcaptcha::settings::Captcha[][src]

pub struct Captcha {
-    pub salt: String,
-    pub gc: u64,
+Captcha in mcaptcha::settings - Rust
+    
+    
pub struct Captcha {
+    pub salt: String,
+    pub gc: u64,
     pub default_difficulty_strategy: DefaultDifficultyStrategy,
-}

Fields

salt: Stringgc: u64default_difficulty_strategy: DefaultDifficultyStrategy

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Fields

salt: Stringgc: u64default_difficulty_strategy: DefaultDifficultyStrategy

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/settings/struct.Database.html b/mcaptcha/settings/struct.Database.html index 61d210fe..8dfcc463 100644 --- a/mcaptcha/settings/struct.Database.html +++ b/mcaptcha/settings/struct.Database.html @@ -1,32 +1,38 @@ -Database in mcaptcha::settings - Rust

Struct mcaptcha::settings::Database[][src]

pub struct Database {
-    pub url: String,
-    pub pool: u32,
-}

Fields

url: Stringpool: u32

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Database in mcaptcha::settings - Rust + +
pub struct Database {
+    pub url: String,
+    pub pool: u32,
+}

Fields

url: Stringpool: u32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/settings/struct.DatabaseBuilder.html b/mcaptcha/settings/struct.DatabaseBuilder.html index a8c00a93..a4e93adf 100644 --- a/mcaptcha/settings/struct.DatabaseBuilder.html +++ b/mcaptcha/settings/struct.DatabaseBuilder.html @@ -1,35 +1,41 @@ -DatabaseBuilder in mcaptcha::settings - Rust

Struct mcaptcha::settings::DatabaseBuilder[][src]

struct DatabaseBuilder {
-    pub port: u32,
-    pub hostname: String,
-    pub username: String,
-    pub password: String,
-    pub name: String,
-}

Fields

port: u32hostname: Stringusername: Stringpassword: Stringname: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +DatabaseBuilder in mcaptcha::settings - Rust + +
struct DatabaseBuilder {
+    pub port: u32,
+    pub hostname: String,
+    pub username: String,
+    pub password: String,
+    pub name: String,
+}

Fields

port: u32hostname: Stringusername: Stringpassword: Stringname: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/settings/struct.DefaultDifficultyStrategy.html b/mcaptcha/settings/struct.DefaultDifficultyStrategy.html index c3062cf0..13dbbee9 100644 --- a/mcaptcha/settings/struct.DefaultDifficultyStrategy.html +++ b/mcaptcha/settings/struct.DefaultDifficultyStrategy.html @@ -1,34 +1,40 @@ -DefaultDifficultyStrategy in mcaptcha::settings - Rust

Struct mcaptcha::settings::DefaultDifficultyStrategy[][src]

pub struct DefaultDifficultyStrategy {
-    pub avg_traffic_difficulty: u32,
-    pub broke_my_site_traffic_difficulty: u32,
-    pub peak_sustainable_traffic_difficulty: u32,
-    pub duration: u32,
-}

Fields

avg_traffic_difficulty: u32broke_my_site_traffic_difficulty: u32peak_sustainable_traffic_difficulty: u32duration: u32

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +DefaultDifficultyStrategy in mcaptcha::settings - Rust + +
pub struct DefaultDifficultyStrategy {
+    pub avg_traffic_difficulty: u32,
+    pub broke_my_site_traffic_difficulty: u32,
+    pub peak_sustainable_traffic_difficulty: u32,
+    pub duration: u32,
+}

Fields

avg_traffic_difficulty: u32broke_my_site_traffic_difficulty: u32peak_sustainable_traffic_difficulty: u32duration: u32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/settings/struct.Redis.html b/mcaptcha/settings/struct.Redis.html index f5988216..6db8b8a6 100644 --- a/mcaptcha/settings/struct.Redis.html +++ b/mcaptcha/settings/struct.Redis.html @@ -1,32 +1,38 @@ -Redis in mcaptcha::settings - Rust

Struct mcaptcha::settings::Redis[][src]

pub struct Redis {
-    pub url: String,
-    pub pool: u32,
-}

Fields

url: Stringpool: u32

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Redis in mcaptcha::settings - Rust + +
pub struct Redis {
+    pub url: String,
+    pub pool: u32,
+}

Fields

url: Stringpool: u32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/settings/struct.Server.html b/mcaptcha/settings/struct.Server.html index 4f152dfa..20bc6960 100644 --- a/mcaptcha/settings/struct.Server.html +++ b/mcaptcha/settings/struct.Server.html @@ -1,36 +1,42 @@ -Server in mcaptcha::settings - Rust

Struct mcaptcha::settings::Server[][src]

pub struct Server {
-    pub port: u32,
-    pub domain: String,
-    pub cookie_secret: String,
-    pub ip: String,
-    pub url_prefix: Option<String>,
-    pub proxy_has_tls: bool,
-}

Fields

port: u32domain: Stringcookie_secret: Stringip: Stringurl_prefix: Option<String>proxy_has_tls: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Server in mcaptcha::settings - Rust + +
pub struct Server {
+    pub port: u32,
+    pub domain: String,
+    pub cookie_secret: String,
+    pub ip: String,
+    pub url_prefix: Option<String>,
+    pub proxy_has_tls: bool,
+}

Fields

port: u32domain: Stringcookie_secret: Stringip: Stringurl_prefix: Option<String>proxy_has_tls: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/settings/struct.Settings.html b/mcaptcha/settings/struct.Settings.html index 16d022ce..0511e98e 100644 --- a/mcaptcha/settings/struct.Settings.html +++ b/mcaptcha/settings/struct.Settings.html @@ -1,40 +1,46 @@ -Settings in mcaptcha::settings - Rust

Struct mcaptcha::settings::Settings[][src]

pub struct Settings {
-    pub debug: bool,
-    pub commercial: bool,
+Settings in mcaptcha::settings - Rust
+    
+    
pub struct Settings {
+    pub debug: bool,
+    pub commercial: bool,
     pub database: Database,
-    pub redis: Option<Redis>,
+    pub redis: Option<Redis>,
     pub server: Server,
     pub captcha: Captcha,
-    pub source_code: String,
-    pub smtp: Option<Smtp>,
-    pub allow_registration: bool,
-    pub allow_demo: bool,
-}

Fields

debug: boolcommercial: booldatabase: Databaseredis: Option<Redis>server: Servercaptcha: Captchasource_code: Stringsmtp: Option<Smtp>allow_registration: boolallow_demo: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- + pub source_code: String, + pub smtp: Option<Smtp>, + pub allow_registration: bool, + pub allow_demo: bool, +}

Fields

debug: boolcommercial: booldatabase: Databaseredis: Option<Redis>server: Servercaptcha: Captchasource_code: Stringsmtp: Option<Smtp>allow_registration: boolallow_demo: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/settings/struct.Smtp.html b/mcaptcha/settings/struct.Smtp.html index 21871614..e6a35755 100644 --- a/mcaptcha/settings/struct.Smtp.html +++ b/mcaptcha/settings/struct.Smtp.html @@ -1,36 +1,42 @@ -Smtp in mcaptcha::settings - Rust

Struct mcaptcha::settings::Smtp[][src]

pub struct Smtp {
-    pub from: String,
-    pub reply: String,
-    pub url: String,
-    pub username: String,
-    pub password: String,
-    pub port: u16,
-}

Fields

from: Stringreply: Stringurl: Stringusername: Stringpassword: Stringport: u16

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Smtp in mcaptcha::settings - Rust + +
pub struct Smtp {
+    pub from: String,
+    pub reply: String,
+    pub url: String,
+    pub username: String,
+    pub password: String,
+    pub port: u16,
+}

Fields

from: Stringreply: Stringurl: Stringusername: Stringpassword: Stringport: u16

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/sidebar-items.js b/mcaptcha/sidebar-items.js index 4412db7d..5f30edf6 100644 --- a/mcaptcha/sidebar-items.js +++ b/mcaptcha/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"constant":[["CACHE_AGE",""],["COMPILED_DATE",""],["DOCS",""],["GIT_COMMIT_HASH",""],["PAGES",""],["PKG_DESCRIPTION",""],["PKG_HOMEPAGE",""],["PKG_NAME",""],["V1_API_ROUTES",""],["VERSION",""],["WIDGET_ROUTES",""]],"fn":[["get_identity_service",""],["get_json_err",""],["main",""]],"mod":[["api",""],["data","App data: redis cache, database connections, etc."],["date",""],["demo",""],["docs",""],["email",""],["errors",""],["middleware",""],["pages",""],["routes",""],["settings",""],["static_assets",""],["stats",""],["widget","User facing CAPTCHA widget"]],"struct":[["BAR_CHART",""],["CREDIT_CARD",""],["CSS",""],["CheckLogin",""],["DOCS_ICON",""],["Data","App data"],["FILES",""],["GITHUB",""],["HELP_CIRCLE",""],["HOME",""],["JS",""],["KEY",""],["MCAPTCHA_TRANS_ICON",""],["MESSAGE",""],["MOBILE_CSS",""],["SETTINGS",""],["SETTINGS_ICON",""],["SOURCE_FILES_OF_INSTANCE","points to source files matching build commit"],["Settings",""],["VERIFICATIN_WIDGET_CSS",""],["VERIFICATIN_WIDGET_JS",""]],"type":[["AppData",""]]}); \ No newline at end of file +initSidebarItems({"constant":[["CACHE_AGE",""],["COMPILED_DATE",""],["DOCS",""],["GIT_COMMIT_HASH",""],["PAGES",""],["PKG_DESCRIPTION",""],["PKG_HOMEPAGE",""],["PKG_NAME",""],["V1_API_ROUTES",""],["VERSION",""],["WIDGET_ROUTES",""]],"fn":[["get_identity_service",""],["get_json_err",""],["main",""]],"mod":[["api",""],["data","App data: redis cache, database connections, etc."],["date",""],["demo",""],["docs",""],["email",""],["errors",""],["pages",""],["routes",""],["settings",""],["static_assets",""],["stats",""],["widget","User facing CAPTCHA widget"]],"struct":[["BAR_CHART",""],["CREDIT_CARD",""],["CSS",""],["DOCS_ICON",""],["Data","App data"],["FILES",""],["GITHUB",""],["HELP_CIRCLE",""],["HOME",""],["JS",""],["KEY",""],["MCAPTCHA_TRANS_ICON",""],["MESSAGE",""],["MOBILE_CSS",""],["SETTINGS",""],["SETTINGS_ICON",""],["SOURCE_FILES_OF_INSTANCE","points to source files matching build commit"],["Settings",""],["VERIFICATIN_WIDGET_CSS",""],["VERIFICATIN_WIDGET_JS",""]],"type":[["AppData",""]]}); \ No newline at end of file diff --git a/mcaptcha/static_assets/filemap/index.html b/mcaptcha/static_assets/filemap/index.html index 3a0cb6fd..a0e7eac7 100644 --- a/mcaptcha/static_assets/filemap/index.html +++ b/mcaptcha/static_assets/filemap/index.html @@ -1,4 +1,9 @@ -mcaptcha::static_assets::filemap - Rust

Module mcaptcha::static_assets::filemap[][src]

Structs

-
- +mcaptcha::static_assets::filemap - Rust + +
\ No newline at end of file diff --git a/mcaptcha/static_assets/filemap/struct.FileMap.html b/mcaptcha/static_assets/filemap/struct.FileMap.html index 46d8c68a..f2337b5a 100644 --- a/mcaptcha/static_assets/filemap/struct.FileMap.html +++ b/mcaptcha/static_assets/filemap/struct.FileMap.html @@ -1,23 +1,30 @@ -FileMap in mcaptcha::static_assets::filemap - Rust

Struct mcaptcha::static_assets::filemap::FileMap[][src]

pub struct FileMap {
+FileMap in mcaptcha::static_assets::filemap - Rust
+    
+    
pub struct FileMap {
     pub files: Files,
-}

Fields

files: Files

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Fields

files: Files

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/fn.services.html b/mcaptcha/static_assets/fn.services.html index bbe14e7e..4cb72f71 100644 --- a/mcaptcha/static_assets/fn.services.html +++ b/mcaptcha/static_assets/fn.services.html @@ -1,3 +1,8 @@ -services in mcaptcha::static_assets - Rust

Function mcaptcha::static_assets::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- +services in mcaptcha::static_assets - Rust + +
pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/static_assets/index.html b/mcaptcha/static_assets/index.html index a33dc74a..d457175b 100644 --- a/mcaptcha/static_assets/index.html +++ b/mcaptcha/static_assets/index.html @@ -1,6 +1,11 @@ -mcaptcha::static_assets - Rust

Module mcaptcha::static_assets[][src]

Re-exports

-
pub use filemap::FileMap;

Modules

-

Functions

-
- +mcaptcha::static_assets - Rust + +
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/index.html b/mcaptcha/static_assets/static_files/assets/index.html index 46fbc0e6..186499cb 100644 --- a/mcaptcha/static_assets/static_files/assets/index.html +++ b/mcaptcha/static_assets/static_files/assets/index.html @@ -1,5 +1,10 @@ -mcaptcha::static_assets::static_files::assets - Rust

Module mcaptcha::static_assets::static_files::assets[][src]

Structs

-

Type Definitions

-
- +mcaptcha::static_assets::static_files::assets - Rust + +
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.BAR_CHART.html b/mcaptcha/static_assets/static_files/assets/struct.BAR_CHART.html index e900bc03..9e499c87 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.BAR_CHART.html +++ b/mcaptcha/static_assets/static_files/assets/struct.BAR_CHART.html @@ -1,25 +1,32 @@ -BAR_CHART in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::BAR_CHART[][src]

pub struct BAR_CHART {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +BAR_CHART in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct BAR_CHART {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.CREDIT_CARD.html b/mcaptcha/static_assets/static_files/assets/struct.CREDIT_CARD.html index dd2638e3..ddf2ab46 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.CREDIT_CARD.html +++ b/mcaptcha/static_assets/static_files/assets/struct.CREDIT_CARD.html @@ -1,25 +1,32 @@ -CREDIT_CARD in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::CREDIT_CARD[][src]

pub struct CREDIT_CARD {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +CREDIT_CARD in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct CREDIT_CARD {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.DOCS_ICON.html b/mcaptcha/static_assets/static_files/assets/struct.DOCS_ICON.html index 00df132a..7ff80cb8 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.DOCS_ICON.html +++ b/mcaptcha/static_assets/static_files/assets/struct.DOCS_ICON.html @@ -1,25 +1,32 @@ -DOCS_ICON in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::DOCS_ICON[][src]

pub struct DOCS_ICON {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +DOCS_ICON in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct DOCS_ICON {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.GITHUB.html b/mcaptcha/static_assets/static_files/assets/struct.GITHUB.html index 7758e0cb..e726cf14 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.GITHUB.html +++ b/mcaptcha/static_assets/static_files/assets/struct.GITHUB.html @@ -1,25 +1,32 @@ -GITHUB in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::GITHUB[][src]

pub struct GITHUB {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +GITHUB in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct GITHUB {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.HELP_CIRCLE.html b/mcaptcha/static_assets/static_files/assets/struct.HELP_CIRCLE.html index a67cb19e..8f9db240 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.HELP_CIRCLE.html +++ b/mcaptcha/static_assets/static_files/assets/struct.HELP_CIRCLE.html @@ -1,25 +1,32 @@ -HELP_CIRCLE in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::HELP_CIRCLE[][src]

pub struct HELP_CIRCLE {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +HELP_CIRCLE in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct HELP_CIRCLE {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.HOME.html b/mcaptcha/static_assets/static_files/assets/struct.HOME.html index 03642d73..167d1362 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.HOME.html +++ b/mcaptcha/static_assets/static_files/assets/struct.HOME.html @@ -1,25 +1,32 @@ -HOME in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::HOME[][src]

pub struct HOME {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +HOME in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct HOME {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.KEY.html b/mcaptcha/static_assets/static_files/assets/struct.KEY.html index 3b762249..fdcafeba 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.KEY.html +++ b/mcaptcha/static_assets/static_files/assets/struct.KEY.html @@ -1,25 +1,32 @@ -KEY in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::KEY[][src]

pub struct KEY {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +KEY in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct KEY {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.MCAPTCHA_TRANS_ICON.html b/mcaptcha/static_assets/static_files/assets/struct.MCAPTCHA_TRANS_ICON.html index d763bfbd..a7ebc268 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.MCAPTCHA_TRANS_ICON.html +++ b/mcaptcha/static_assets/static_files/assets/struct.MCAPTCHA_TRANS_ICON.html @@ -1,25 +1,32 @@ -MCAPTCHA_TRANS_ICON in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON[][src]

pub struct MCAPTCHA_TRANS_ICON {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +MCAPTCHA_TRANS_ICON in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct MCAPTCHA_TRANS_ICON {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.MESSAGE.html b/mcaptcha/static_assets/static_files/assets/struct.MESSAGE.html index 1e1a73dc..e384924e 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.MESSAGE.html +++ b/mcaptcha/static_assets/static_files/assets/struct.MESSAGE.html @@ -1,25 +1,32 @@ -MESSAGE in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::MESSAGE[][src]

pub struct MESSAGE {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +MESSAGE in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct MESSAGE {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/struct.SETTINGS_ICON.html b/mcaptcha/static_assets/static_files/assets/struct.SETTINGS_ICON.html index 97d52a87..c402084e 100644 --- a/mcaptcha/static_assets/static_files/assets/struct.SETTINGS_ICON.html +++ b/mcaptcha/static_assets/static_files/assets/struct.SETTINGS_ICON.html @@ -1,25 +1,32 @@ -SETTINGS_ICON in mcaptcha::static_assets::static_files::assets - Rust

Struct mcaptcha::static_assets::static_files::assets::SETTINGS_ICON[][src]

pub struct SETTINGS_ICON {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +SETTINGS_ICON in mcaptcha::static_assets::static_files::assets - Rust + +
pub struct SETTINGS_ICON {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/assets/type.Img.html b/mcaptcha/static_assets/static_files/assets/type.Img.html index 2b594313..90087e34 100644 --- a/mcaptcha/static_assets/static_files/assets/type.Img.html +++ b/mcaptcha/static_assets/static_files/assets/type.Img.html @@ -1,3 +1,8 @@ -Img in mcaptcha::static_assets::static_files::assets - Rust

Type Definition mcaptcha::static_assets::static_files::assets::Img[][src]

type Img = (&'static str, &'static str);
- +Img in mcaptcha::static_assets::static_files::assets - Rust + +
type Img = (&'static str, &'static str);
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/fn.handle_assets.html b/mcaptcha/static_assets/static_files/fn.handle_assets.html index 820fb2b7..abfeb48f 100644 --- a/mcaptcha/static_assets/static_files/fn.handle_assets.html +++ b/mcaptcha/static_assets/static_files/fn.handle_assets.html @@ -1,3 +1,8 @@ -handle_assets in mcaptcha::static_assets::static_files - Rust

Function mcaptcha::static_assets::static_files::handle_assets[][src]

fn handle_assets(path: &str) -> HttpResponse
- +handle_assets in mcaptcha::static_assets::static_files - Rust + +
fn handle_assets(path: &str) -> HttpResponse
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/fn.handle_favicons.html b/mcaptcha/static_assets/static_files/fn.handle_favicons.html index 036e6fc6..c8b0d294 100644 --- a/mcaptcha/static_assets/static_files/fn.handle_favicons.html +++ b/mcaptcha/static_assets/static_files/fn.handle_favicons.html @@ -1,3 +1,8 @@ -handle_favicons in mcaptcha::static_assets::static_files - Rust

Function mcaptcha::static_assets::static_files::handle_favicons[][src]

fn handle_favicons(path: &str) -> HttpResponse
- +handle_favicons in mcaptcha::static_assets::static_files - Rust + +
fn handle_favicons(path: &str) -> HttpResponse
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/index.html b/mcaptcha/static_assets/static_files/index.html index ca986b04..f49ce120 100644 --- a/mcaptcha/static_assets/static_files/index.html +++ b/mcaptcha/static_assets/static_files/index.html @@ -1,6 +1,11 @@ -mcaptcha::static_assets::static_files - Rust

Module mcaptcha::static_assets::static_files[][src]

Modules

-

Structs

-

Functions

-
- +mcaptcha::static_assets::static_files - Rust + +
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/struct.Asset.html b/mcaptcha/static_assets/static_files/struct.Asset.html index a2b1556f..7c016782 100644 --- a/mcaptcha/static_assets/static_files/struct.Asset.html +++ b/mcaptcha/static_assets/static_files/struct.Asset.html @@ -1,25 +1,32 @@ -Asset in mcaptcha::static_assets::static_files - Rust

Struct mcaptcha::static_assets::static_files::Asset[][src]

struct Asset;

Implementations

Get an embedded file and its metadata.

-

Iterates over the file paths in the folder.

-

Trait Implementations

Get an embedded file and its metadata. Read more

-

Iterates over the file paths in the folder. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Asset in mcaptcha::static_assets::static_files - Rust + +
struct Asset;

Implementations

Get an embedded file and its metadata.

+

Iterates over the file paths in the folder.

+

Trait Implementations

Get an embedded file and its metadata. Read more

+

Iterates over the file paths in the folder. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/struct.Favicons.html b/mcaptcha/static_assets/static_files/struct.Favicons.html index d8968967..78556826 100644 --- a/mcaptcha/static_assets/static_files/struct.Favicons.html +++ b/mcaptcha/static_assets/static_files/struct.Favicons.html @@ -1,25 +1,32 @@ -Favicons in mcaptcha::static_assets::static_files - Rust

Struct mcaptcha::static_assets::static_files::Favicons[][src]

struct Favicons;

Implementations

Get an embedded file and its metadata.

-

Iterates over the file paths in the folder.

-

Trait Implementations

Get an embedded file and its metadata. Read more

-

Iterates over the file paths in the folder. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Favicons in mcaptcha::static_assets::static_files - Rust + +
struct Favicons;

Implementations

Get an embedded file and its metadata.

+

Iterates over the file paths in the folder.

+

Trait Implementations

Get an embedded file and its metadata. Read more

+

Iterates over the file paths in the folder. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/struct.favicons.html b/mcaptcha/static_assets/static_files/struct.favicons.html index ec52c9fc..193ebc25 100644 --- a/mcaptcha/static_assets/static_files/struct.favicons.html +++ b/mcaptcha/static_assets/static_files/struct.favicons.html @@ -1,21 +1,28 @@ -favicons in mcaptcha::static_assets::static_files - Rust

Struct mcaptcha::static_assets::static_files::favicons[][src]

pub struct favicons;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +favicons in mcaptcha::static_assets::static_files - Rust + +
pub struct favicons;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/static_assets/static_files/struct.static_files.html b/mcaptcha/static_assets/static_files/struct.static_files.html index 0159ff3c..0a731453 100644 --- a/mcaptcha/static_assets/static_files/struct.static_files.html +++ b/mcaptcha/static_assets/static_files/struct.static_files.html @@ -1,21 +1,28 @@ -static_files in mcaptcha::static_assets::static_files - Rust

Struct mcaptcha::static_assets::static_files::static_files[][src]

pub struct static_files;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +static_files in mcaptcha::static_assets::static_files - Rust + +
pub struct static_files;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/stats/fetch/index.html b/mcaptcha/stats/fetch/index.html index ddf9926a..082e927c 100644 --- a/mcaptcha/stats/fetch/index.html +++ b/mcaptcha/stats/fetch/index.html @@ -1,5 +1,10 @@ -mcaptcha::stats::fetch - Rust

Module mcaptcha::stats::fetch[][src]

Modules

-

Structs

-
- +mcaptcha::stats::fetch - Rust + +
\ No newline at end of file diff --git a/mcaptcha/stats/fetch/runners/fn.fetch_config_fetched.html b/mcaptcha/stats/fetch/runners/fn.fetch_config_fetched.html index ed63c54b..abf47738 100644 --- a/mcaptcha/stats/fetch/runners/fn.fetch_config_fetched.html +++ b/mcaptcha/stats/fetch/runners/fn.fetch_config_fetched.html @@ -1,4 +1,9 @@ -fetch_config_fetched in mcaptcha::stats::fetch::runners - Rust

Function mcaptcha::stats::fetch::runners::fetch_config_fetched[][src]

pub async fn fetch_config_fetched(
    user: &str,
    key: &str,
    db: &PgPool
) -> Result<Vec<Date>, ServiceError>
Expand description

featch PoWConfig fetches

-
- +fetch_config_fetched in mcaptcha::stats::fetch::runners - Rust + +
pub async fn fetch_config_fetched(
    user: &str,
    key: &str,
    db: &PgPool
) -> Result<Vec<Date>, ServiceError>
Expand description

featch PoWConfig fetches

+
\ No newline at end of file diff --git a/mcaptcha/stats/fetch/runners/fn.fetch_confirm.html b/mcaptcha/stats/fetch/runners/fn.fetch_confirm.html index c05d4de7..c37c572c 100644 --- a/mcaptcha/stats/fetch/runners/fn.fetch_confirm.html +++ b/mcaptcha/stats/fetch/runners/fn.fetch_confirm.html @@ -1,4 +1,9 @@ -fetch_confirm in mcaptcha::stats::fetch::runners - Rust

Function mcaptcha::stats::fetch::runners::fetch_confirm[][src]

pub async fn fetch_confirm(
    user: &str,
    key: &str,
    db: &PgPool
) -> Result<Vec<Date>, ServiceError>
Expand description

featch PoWConfig confirms

-
- +fetch_confirm in mcaptcha::stats::fetch::runners - Rust + +
pub async fn fetch_confirm(
    user: &str,
    key: &str,
    db: &PgPool
) -> Result<Vec<Date>, ServiceError>
Expand description

featch PoWConfig confirms

+
\ No newline at end of file diff --git a/mcaptcha/stats/fetch/runners/fn.fetch_solve.html b/mcaptcha/stats/fetch/runners/fn.fetch_solve.html index 25ed6426..bf44a8fb 100644 --- a/mcaptcha/stats/fetch/runners/fn.fetch_solve.html +++ b/mcaptcha/stats/fetch/runners/fn.fetch_solve.html @@ -1,4 +1,9 @@ -fetch_solve in mcaptcha::stats::fetch::runners - Rust

Function mcaptcha::stats::fetch::runners::fetch_solve[][src]

pub async fn fetch_solve(
    user: &str,
    key: &str,
    db: &PgPool
) -> Result<Vec<Date>, ServiceError>
Expand description

featch PoWConfig solves

-
- +fetch_solve in mcaptcha::stats::fetch::runners - Rust + +
pub async fn fetch_solve(
    user: &str,
    key: &str,
    db: &PgPool
) -> Result<Vec<Date>, ServiceError>
Expand description

featch PoWConfig solves

+
\ No newline at end of file diff --git a/mcaptcha/stats/fetch/runners/index.html b/mcaptcha/stats/fetch/runners/index.html index c368ee46..a2bab792 100644 --- a/mcaptcha/stats/fetch/runners/index.html +++ b/mcaptcha/stats/fetch/runners/index.html @@ -1,7 +1,12 @@ -mcaptcha::stats::fetch::runners - Rust

Module mcaptcha::stats::fetch::runners[][src]

Functions

+mcaptcha::stats::fetch::runners - Rust + +

Functions

featch PoWConfig fetches

featch PoWConfig confirms

featch PoWConfig solves

-
- +
\ No newline at end of file diff --git a/mcaptcha/stats/fetch/struct.Stats.html b/mcaptcha/stats/fetch/struct.Stats.html index dbaddd74..b7d1096b 100644 --- a/mcaptcha/stats/fetch/struct.Stats.html +++ b/mcaptcha/stats/fetch/struct.Stats.html @@ -1,32 +1,38 @@ -Stats in mcaptcha::stats::fetch - Rust

Struct mcaptcha::stats::fetch::Stats[][src]

pub struct Stats {
-    pub config_fetches: Vec<Date>,
-    pub solves: Vec<Date>,
-    pub confirms: Vec<Date>,
-}

Fields

config_fetches: Vec<Date>solves: Vec<Date>confirms: Vec<Date>

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Stats in mcaptcha::stats::fetch - Rust + +
pub struct Stats {
+    pub config_fetches: Vec<Date>,
+    pub solves: Vec<Date>,
+    pub confirms: Vec<Date>,
+}

Fields

config_fetches: Vec<Date>solves: Vec<Date>confirms: Vec<Date>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/stats/fetch/struct.StatsPayload.html b/mcaptcha/stats/fetch/struct.StatsPayload.html index c066ff86..fc33d2cb 100644 --- a/mcaptcha/stats/fetch/struct.StatsPayload.html +++ b/mcaptcha/stats/fetch/struct.StatsPayload.html @@ -1,32 +1,38 @@ -StatsPayload in mcaptcha::stats::fetch - Rust

Struct mcaptcha::stats::fetch::StatsPayload[][src]

pub struct StatsPayload {
-    pub key: String,
-}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +StatsPayload in mcaptcha::stats::fetch - Rust + +
pub struct StatsPayload {
+    pub key: String,
+}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/stats/fetch/struct.StatsUnixTimestamp.html b/mcaptcha/stats/fetch/struct.StatsUnixTimestamp.html index 9e78a2d1..b174036a 100644 --- a/mcaptcha/stats/fetch/struct.StatsUnixTimestamp.html +++ b/mcaptcha/stats/fetch/struct.StatsUnixTimestamp.html @@ -1,35 +1,41 @@ -StatsUnixTimestamp in mcaptcha::stats::fetch - Rust

Struct mcaptcha::stats::fetch::StatsUnixTimestamp[][src]

pub struct StatsUnixTimestamp {
-    pub config_fetches: Vec<i64>,
-    pub solves: Vec<i64>,
-    pub confirms: Vec<i64>,
-}

Fields

config_fetches: Vec<i64>solves: Vec<i64>confirms: Vec<i64>

Implementations

featch PoWConfig confirms

-

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +StatsUnixTimestamp in mcaptcha::stats::fetch - Rust + +
pub struct StatsUnixTimestamp {
+    pub config_fetches: Vec<i64>,
+    pub solves: Vec<i64>,
+    pub confirms: Vec<i64>,
+}

Fields

config_fetches: Vec<i64>solves: Vec<i64>confirms: Vec<i64>

Implementations

featch PoWConfig confirms

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/stats/index.html b/mcaptcha/stats/index.html index 67e707e5..0d2872dc 100644 --- a/mcaptcha/stats/index.html +++ b/mcaptcha/stats/index.html @@ -1,4 +1,9 @@ -mcaptcha::stats - Rust

Module mcaptcha::stats[][src]

Modules

-
- +mcaptcha::stats - Rust + +
\ No newline at end of file diff --git a/mcaptcha/stats/record/fn.record_confirm.html b/mcaptcha/stats/record/fn.record_confirm.html index b555a9ca..7992c86f 100644 --- a/mcaptcha/stats/record/fn.record_confirm.html +++ b/mcaptcha/stats/record/fn.record_confirm.html @@ -1,4 +1,9 @@ -record_confirm in mcaptcha::stats::record - Rust

Function mcaptcha::stats::record::record_confirm[][src]

pub async fn record_confirm(key: &str, db: &PgPool)
Expand description

record PoWConfig confirms

-
- +record_confirm in mcaptcha::stats::record - Rust + +
pub async fn record_confirm(key: &str, db: &PgPool)
Expand description

record PoWConfig confirms

+
\ No newline at end of file diff --git a/mcaptcha/stats/record/fn.record_fetch.html b/mcaptcha/stats/record/fn.record_fetch.html index 1d2f3bd4..93b8a8b0 100644 --- a/mcaptcha/stats/record/fn.record_fetch.html +++ b/mcaptcha/stats/record/fn.record_fetch.html @@ -1,4 +1,9 @@ -record_fetch in mcaptcha::stats::record - Rust

Function mcaptcha::stats::record::record_fetch[][src]

pub async fn record_fetch(key: &str, db: &PgPool)
Expand description

record PoWConfig fetches

-
- +record_fetch in mcaptcha::stats::record - Rust + +
pub async fn record_fetch(key: &str, db: &PgPool)
Expand description

record PoWConfig fetches

+
\ No newline at end of file diff --git a/mcaptcha/stats/record/fn.record_solve.html b/mcaptcha/stats/record/fn.record_solve.html index 17dc0046..98d489e4 100644 --- a/mcaptcha/stats/record/fn.record_solve.html +++ b/mcaptcha/stats/record/fn.record_solve.html @@ -1,4 +1,9 @@ -record_solve in mcaptcha::stats::record - Rust

Function mcaptcha::stats::record::record_solve[][src]

pub async fn record_solve(key: &str, db: &PgPool)
Expand description

record PoWConfig solves

-
- +record_solve in mcaptcha::stats::record - Rust + +
pub async fn record_solve(key: &str, db: &PgPool)
Expand description

record PoWConfig solves

+
\ No newline at end of file diff --git a/mcaptcha/stats/record/index.html b/mcaptcha/stats/record/index.html index 08a6ff27..93f0bb6d 100644 --- a/mcaptcha/stats/record/index.html +++ b/mcaptcha/stats/record/index.html @@ -1,7 +1,12 @@ -mcaptcha::stats::record - Rust

Module mcaptcha::stats::record[][src]

Functions

+mcaptcha::stats::record - Rust + +

Functions

record PoWConfig confirms

record PoWConfig fetches

record PoWConfig solves

-
- +
\ No newline at end of file diff --git a/mcaptcha/struct.BAR_CHART.html b/mcaptcha/struct.BAR_CHART.html index 31cdf1b2..b260a748 100644 --- a/mcaptcha/struct.BAR_CHART.html +++ b/mcaptcha/struct.BAR_CHART.html @@ -1,25 +1,32 @@ -BAR_CHART in mcaptcha - Rust

Struct mcaptcha::BAR_CHART[][src]

pub struct BAR_CHART {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +BAR_CHART in mcaptcha - Rust + +
pub struct BAR_CHART {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.CREDIT_CARD.html b/mcaptcha/struct.CREDIT_CARD.html index 37d7ec9f..5d895cf1 100644 --- a/mcaptcha/struct.CREDIT_CARD.html +++ b/mcaptcha/struct.CREDIT_CARD.html @@ -1,25 +1,32 @@ -CREDIT_CARD in mcaptcha - Rust

Struct mcaptcha::CREDIT_CARD[][src]

pub struct CREDIT_CARD {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +CREDIT_CARD in mcaptcha - Rust + +
pub struct CREDIT_CARD {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.CSS.html b/mcaptcha/struct.CSS.html index 77e432be..13757fb0 100644 --- a/mcaptcha/struct.CSS.html +++ b/mcaptcha/struct.CSS.html @@ -1,25 +1,1188 @@ -CSS in mcaptcha - Rust

Struct mcaptcha::CSS[][src]

pub struct CSS {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +CSS in mcaptcha - Rust + +
+

Struct mcaptcha::CSS

source · []
pub struct CSS {
+    pub(crate) __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = &'static str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.CheckLogin.html b/mcaptcha/struct.CheckLogin.html deleted file mode 100644 index 09d8650d..00000000 --- a/mcaptcha/struct.CheckLogin.html +++ /dev/null @@ -1,27 +0,0 @@ -CheckLogin in mcaptcha - Rust

Struct mcaptcha::CheckLogin[][src]

pub struct CheckLogin;

Trait Implementations

Responses produced by the service.

-

Errors produced by the service.

-

The TransformService value created by this factory

-

Errors produced while building a transform service.

-

The future response value.

-

Creates and returns a new Transform component, asynchronously

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- - \ No newline at end of file diff --git a/mcaptcha/struct.DOCS_ICON.html b/mcaptcha/struct.DOCS_ICON.html index 613979e4..46f3389d 100644 --- a/mcaptcha/struct.DOCS_ICON.html +++ b/mcaptcha/struct.DOCS_ICON.html @@ -1,25 +1,32 @@ -DOCS_ICON in mcaptcha - Rust

Struct mcaptcha::DOCS_ICON[][src]

pub struct DOCS_ICON {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +DOCS_ICON in mcaptcha - Rust + +
pub struct DOCS_ICON {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.Data.html b/mcaptcha/struct.Data.html index a63fa039..d791f192 100644 --- a/mcaptcha/struct.Data.html +++ b/mcaptcha/struct.Data.html @@ -1,32 +1,39 @@ -Data in mcaptcha - Rust

Struct mcaptcha::Data[][src]

pub struct Data {
+Data in mcaptcha - Rust
+    
+    
+

Struct mcaptcha::Data

source · []
pub struct Data {
     pub db: PgPool,
     pub creds: Config,
     pub captcha: SystemGroup,
-    pub mailer: Option<AsyncSmtpTransport<Tokio1Executor>>,
+    pub mailer: Option<AsyncSmtpTransport<Tokio1Executor>>,
 }
Expand description

App data

Fields

db: PgPool

databse pool

creds: Config

credential management configuration

captcha: SystemGroup

mCaptcha system: Redis cache, etc.

-
mailer: Option<AsyncSmtpTransport<Tokio1Executor>>

email client

-

Implementations

create new instance of app data

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +
mailer: Option<AsyncSmtpTransport<Tokio1Executor>>

email client

+

Implementations

create new instance of app data

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.FILES.html b/mcaptcha/struct.FILES.html index e8e908d4..df876501 100644 --- a/mcaptcha/struct.FILES.html +++ b/mcaptcha/struct.FILES.html @@ -1,25 +1,32 @@ -FILES in mcaptcha - Rust

Struct mcaptcha::FILES[][src]

pub struct FILES {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = FileMap>

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +FILES in mcaptcha - Rust + +
+

Struct mcaptcha::FILES

source · []
pub struct FILES {
+    pub(crate) __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = FileMap>

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.GITHUB.html b/mcaptcha/struct.GITHUB.html index a9c179a2..11e292fc 100644 --- a/mcaptcha/struct.GITHUB.html +++ b/mcaptcha/struct.GITHUB.html @@ -1,25 +1,32 @@ -GITHUB in mcaptcha - Rust

Struct mcaptcha::GITHUB[][src]

pub struct GITHUB {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +GITHUB in mcaptcha - Rust + +
pub struct GITHUB {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.HELP_CIRCLE.html b/mcaptcha/struct.HELP_CIRCLE.html index bd0b3895..592efc4b 100644 --- a/mcaptcha/struct.HELP_CIRCLE.html +++ b/mcaptcha/struct.HELP_CIRCLE.html @@ -1,25 +1,32 @@ -HELP_CIRCLE in mcaptcha - Rust

Struct mcaptcha::HELP_CIRCLE[][src]

pub struct HELP_CIRCLE {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +HELP_CIRCLE in mcaptcha - Rust + +
pub struct HELP_CIRCLE {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.HOME.html b/mcaptcha/struct.HOME.html index 8d309b0a..acf4e362 100644 --- a/mcaptcha/struct.HOME.html +++ b/mcaptcha/struct.HOME.html @@ -1,25 +1,32 @@ -HOME in mcaptcha - Rust

Struct mcaptcha::HOME[][src]

pub struct HOME {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +HOME in mcaptcha - Rust + +
+

Struct mcaptcha::HOME

source · []
pub struct HOME {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.JS.html b/mcaptcha/struct.JS.html index a6bb480f..59bb181d 100644 --- a/mcaptcha/struct.JS.html +++ b/mcaptcha/struct.JS.html @@ -1,25 +1,1188 @@ -JS in mcaptcha - Rust

Struct mcaptcha::JS[][src]

pub struct JS {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +JS in mcaptcha - Rust + +
+

Struct mcaptcha::JS

source · []
pub struct JS {
+    pub(crate) __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = &'static str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.KEY.html b/mcaptcha/struct.KEY.html index aad2d9af..7a73afde 100644 --- a/mcaptcha/struct.KEY.html +++ b/mcaptcha/struct.KEY.html @@ -1,25 +1,32 @@ -KEY in mcaptcha - Rust

Struct mcaptcha::KEY[][src]

pub struct KEY {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +KEY in mcaptcha - Rust + +
+

Struct mcaptcha::KEY

source · []
pub struct KEY {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.MCAPTCHA_TRANS_ICON.html b/mcaptcha/struct.MCAPTCHA_TRANS_ICON.html index 158f5f3a..01c7b33e 100644 --- a/mcaptcha/struct.MCAPTCHA_TRANS_ICON.html +++ b/mcaptcha/struct.MCAPTCHA_TRANS_ICON.html @@ -1,25 +1,32 @@ -MCAPTCHA_TRANS_ICON in mcaptcha - Rust

Struct mcaptcha::MCAPTCHA_TRANS_ICON[][src]

pub struct MCAPTCHA_TRANS_ICON {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +MCAPTCHA_TRANS_ICON in mcaptcha - Rust + +
pub struct MCAPTCHA_TRANS_ICON {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.MESSAGE.html b/mcaptcha/struct.MESSAGE.html index d031da09..59383894 100644 --- a/mcaptcha/struct.MESSAGE.html +++ b/mcaptcha/struct.MESSAGE.html @@ -1,25 +1,32 @@ -MESSAGE in mcaptcha - Rust

Struct mcaptcha::MESSAGE[][src]

pub struct MESSAGE {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +MESSAGE in mcaptcha - Rust + +
pub struct MESSAGE {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.MOBILE_CSS.html b/mcaptcha/struct.MOBILE_CSS.html index 101eea47..c2074d5b 100644 --- a/mcaptcha/struct.MOBILE_CSS.html +++ b/mcaptcha/struct.MOBILE_CSS.html @@ -1,25 +1,1188 @@ -MOBILE_CSS in mcaptcha - Rust

Struct mcaptcha::MOBILE_CSS[][src]

pub struct MOBILE_CSS {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +MOBILE_CSS in mcaptcha - Rust + +
pub struct MOBILE_CSS {
+    pub(crate) __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = &'static str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.SETTINGS.html b/mcaptcha/struct.SETTINGS.html index 6e9397ba..18a6dc0e 100644 --- a/mcaptcha/struct.SETTINGS.html +++ b/mcaptcha/struct.SETTINGS.html @@ -1,25 +1,32 @@ -SETTINGS in mcaptcha - Rust

Struct mcaptcha::SETTINGS[][src]

pub struct SETTINGS {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = Settings>

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +SETTINGS in mcaptcha - Rust + +
pub struct SETTINGS {
+    pub(crate) __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.SETTINGS_ICON.html b/mcaptcha/struct.SETTINGS_ICON.html index c63a3a65..30c149a5 100644 --- a/mcaptcha/struct.SETTINGS_ICON.html +++ b/mcaptcha/struct.SETTINGS_ICON.html @@ -1,25 +1,32 @@ -SETTINGS_ICON in mcaptcha - Rust

Struct mcaptcha::SETTINGS_ICON[][src]

pub struct SETTINGS_ICON {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +SETTINGS_ICON in mcaptcha - Rust + +
pub struct SETTINGS_ICON {
+    __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html b/mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html index ff7e7875..585a4680 100644 --- a/mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html +++ b/mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html @@ -1,32 +1,38 @@ -SOURCE_FILES_OF_INSTANCE in mcaptcha - Rust

Struct mcaptcha::SOURCE_FILES_OF_INSTANCE[][src]

pub struct SOURCE_FILES_OF_INSTANCE {
-    __private_field: (),
+SOURCE_FILES_OF_INSTANCE in mcaptcha - Rust
+    
+    
pub struct SOURCE_FILES_OF_INSTANCE {
+    pub(crate) __private_field: (),
 }
Expand description

points to source files matching build commit

-

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

-
Examples
+

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

+
Examples

Basic usage:

let s = String::from("foo");
 
 assert_eq!("foo", s.as_str());
-

Returns this String’s capacity, in bytes.

-
Examples
+

Returns this String’s capacity, in bytes.

+
Examples

Basic usage:

let s = String::with_capacity(10);
 
 assert!(s.capacity() >= 10);
-

Returns a byte slice of this String’s contents.

-

The inverse of this method is from_utf8.

-
Examples
+

Returns a byte slice of this String’s contents.

+

The inverse of this method is from_utf8.

+
Examples

Basic usage:

let s = String::from("hello");
 
 assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes());
-

Returns the length of this String, in bytes, not chars or +

Returns the length of this String, in bytes, not chars or graphemes. In other words, it might not be what a human considers the length of the string.

-
Examples
+
Examples

Basic usage:

let a = String::from("foo");
@@ -35,8 +41,8 @@ length of the string.

let fancy_f = String::from("ƒoo"); assert_eq!(fancy_f.len(), 4); assert_eq!(fancy_f.chars().count(), 3);
-

Returns true if this String has a length of zero, and false otherwise.

-
Examples
+

Returns true if this String has a length of zero, and false otherwise.

+
Examples

Basic usage:

let mut v = String::new();
@@ -44,26 +50,1183 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Methods from Deref<Target = str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.Settings.html b/mcaptcha/struct.Settings.html index f79cba3b..47627a43 100644 --- a/mcaptcha/struct.Settings.html +++ b/mcaptcha/struct.Settings.html @@ -1,40 +1,46 @@ -Settings in mcaptcha - Rust

Struct mcaptcha::Settings[][src]

pub struct Settings {
-    pub debug: bool,
-    pub commercial: bool,
+Settings in mcaptcha - Rust
+    
+    
pub struct Settings {
+    pub debug: bool,
+    pub commercial: bool,
     pub database: Database,
-    pub redis: Option<Redis>,
+    pub redis: Option<Redis>,
     pub server: Server,
     pub captcha: Captcha,
-    pub source_code: String,
-    pub smtp: Option<Smtp>,
-    pub allow_registration: bool,
-    pub allow_demo: bool,
-}

Fields

debug: boolcommercial: booldatabase: Databaseredis: Option<Redis>server: Servercaptcha: Captchasource_code: Stringsmtp: Option<Smtp>allow_registration: boolallow_demo: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- + pub source_code: String, + pub smtp: Option<Smtp>, + pub allow_registration: bool, + pub allow_demo: bool, +}

Fields

debug: boolcommercial: booldatabase: Databaseredis: Option<Redis>server: Servercaptcha: Captchasource_code: Stringsmtp: Option<Smtp>allow_registration: boolallow_demo: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html b/mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html index c5c7f20b..5b747def 100644 --- a/mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html +++ b/mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html @@ -1,25 +1,1188 @@ -VERIFICATIN_WIDGET_CSS in mcaptcha - Rust

Struct mcaptcha::VERIFICATIN_WIDGET_CSS[][src]

pub struct VERIFICATIN_WIDGET_CSS {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +VERIFICATIN_WIDGET_CSS in mcaptcha - Rust + +
pub struct VERIFICATIN_WIDGET_CSS {
+    pub(crate) __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = &'static str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/struct.VERIFICATIN_WIDGET_JS.html b/mcaptcha/struct.VERIFICATIN_WIDGET_JS.html index ecb6a727..0ff431ef 100644 --- a/mcaptcha/struct.VERIFICATIN_WIDGET_JS.html +++ b/mcaptcha/struct.VERIFICATIN_WIDGET_JS.html @@ -1,25 +1,1188 @@ -VERIFICATIN_WIDGET_JS in mcaptcha - Rust

Struct mcaptcha::VERIFICATIN_WIDGET_JS[][src]

pub struct VERIFICATIN_WIDGET_JS {
-    __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +VERIFICATIN_WIDGET_JS in mcaptcha - Rust + +
pub struct VERIFICATIN_WIDGET_JS {
+    pub(crate) __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = &'static str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/type.AppData.html b/mcaptcha/type.AppData.html index 7a0d61ea..243b44af 100644 --- a/mcaptcha/type.AppData.html +++ b/mcaptcha/type.AppData.html @@ -1,3 +1,8 @@ -AppData in mcaptcha - Rust

Type Definition mcaptcha::AppData[][src]

pub type AppData = Data<Arc<Data>>;
- +AppData in mcaptcha - Rust + +
+

Type Definition mcaptcha::AppData

source · []
pub type AppData = Data<Arc<Data>>;
\ No newline at end of file diff --git a/mcaptcha/widget/constant.PAGE.html b/mcaptcha/widget/constant.PAGE.html index 461d483d..87b7ad30 100644 --- a/mcaptcha/widget/constant.PAGE.html +++ b/mcaptcha/widget/constant.PAGE.html @@ -1,3 +1,8 @@ -PAGE in mcaptcha::widget - Rust

Constant mcaptcha::widget::PAGE[][src]

const PAGE: &str = "mCaptcha CAPTCHA verification";
- +PAGE in mcaptcha::widget - Rust + +
+

Constant mcaptcha::widget::PAGE

source · []
const PAGE: &str = "mCaptcha CAPTCHA verification";
\ No newline at end of file diff --git a/mcaptcha/widget/constant.WIDGET_ROUTES.html b/mcaptcha/widget/constant.WIDGET_ROUTES.html index 3f9227a0..32863ce1 100644 --- a/mcaptcha/widget/constant.WIDGET_ROUTES.html +++ b/mcaptcha/widget/constant.WIDGET_ROUTES.html @@ -1,3 +1,8 @@ -WIDGET_ROUTES in mcaptcha::widget - Rust

Constant mcaptcha::widget::WIDGET_ROUTES[][src]

pub const WIDGET_ROUTES: Widget;
- +WIDGET_ROUTES in mcaptcha::widget - Rust + +
pub const WIDGET_ROUTES: Widget;
\ No newline at end of file diff --git a/mcaptcha/widget/fn.services.html b/mcaptcha/widget/fn.services.html index c8f71b64..21f6f07a 100644 --- a/mcaptcha/widget/fn.services.html +++ b/mcaptcha/widget/fn.services.html @@ -1,4 +1,9 @@ -services in mcaptcha::widget - Rust

Function mcaptcha::widget::services[][src]

pub fn services(cfg: &mut ServiceConfig)
Expand description

widget services

-
- +services in mcaptcha::widget - Rust + +
pub fn services(cfg: &mut ServiceConfig)
Expand description

widget services

+
\ No newline at end of file diff --git a/mcaptcha/widget/index.html b/mcaptcha/widget/index.html index 485312de..20c203ed 100644 --- a/mcaptcha/widget/index.html +++ b/mcaptcha/widget/index.html @@ -1,10 +1,15 @@ -mcaptcha::widget - Rust

Module mcaptcha::widget[][src]

Expand description

User facing CAPTCHA widget

-

Modules

-

Structs

+mcaptcha::widget - Rust + +
Expand description

User facing CAPTCHA widget

+

Modules

+

Structs

render a client side widget for CAPTCHA verification

-

Constants

-

Functions

+

Constants

+

Functions

widget services

-
- +
\ No newline at end of file diff --git a/mcaptcha/widget/routes/index.html b/mcaptcha/widget/routes/index.html index b4b839b1..cc1d393c 100644 --- a/mcaptcha/widget/routes/index.html +++ b/mcaptcha/widget/routes/index.html @@ -1,4 +1,9 @@ -mcaptcha::widget::routes - Rust

Module mcaptcha::widget::routes[][src]

Structs

-
- +mcaptcha::widget::routes - Rust + +
\ No newline at end of file diff --git a/mcaptcha/widget/routes/struct.Widget.html b/mcaptcha/widget/routes/struct.Widget.html index 2bab9ee1..343f6e54 100644 --- a/mcaptcha/widget/routes/struct.Widget.html +++ b/mcaptcha/widget/routes/struct.Widget.html @@ -1,23 +1,30 @@ -Widget in mcaptcha::widget::routes - Rust

Struct mcaptcha::widget::routes::Widget[][src]

pub struct Widget {
-    pub verification_widget: &'static str,
-}

Fields

verification_widget: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Widget in mcaptcha::widget::routes - Rust + +
pub struct Widget {
+    pub verification_widget: &'static str,
+}

Fields

verification_widget: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/widget/struct.INDEX_PAGE.html b/mcaptcha/widget/struct.INDEX_PAGE.html index 2d7cb27b..a5228779 100644 --- a/mcaptcha/widget/struct.INDEX_PAGE.html +++ b/mcaptcha/widget/struct.INDEX_PAGE.html @@ -1,31 +1,37 @@ -INDEX_PAGE in mcaptcha::widget - Rust

Struct mcaptcha::widget::INDEX_PAGE[][src]

struct INDEX_PAGE {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

-
Examples
+INDEX_PAGE in mcaptcha::widget - Rust + +
struct INDEX_PAGE {
+    __private_field: (),
+}

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

+
Examples

Basic usage:

let s = String::from("foo");
 
 assert_eq!("foo", s.as_str());
-

Returns this String’s capacity, in bytes.

-
Examples
+

Returns this String’s capacity, in bytes.

+
Examples

Basic usage:

let s = String::with_capacity(10);
 
 assert!(s.capacity() >= 10);
-

Returns a byte slice of this String’s contents.

-

The inverse of this method is from_utf8.

-
Examples
+

Returns a byte slice of this String’s contents.

+

The inverse of this method is from_utf8.

+
Examples

Basic usage:

let s = String::from("hello");
 
 assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes());
-

Returns the length of this String, in bytes, not chars or +

Returns the length of this String, in bytes, not chars or graphemes. In other words, it might not be what a human considers the length of the string.

-
Examples
+
Examples

Basic usage:

let a = String::from("foo");
@@ -34,8 +40,8 @@ length of the string.

let fancy_f = String::from("ƒoo"); assert_eq!(fancy_f.len(), 4); assert_eq!(fancy_f.chars().count(), 3);
-

Returns true if this String has a length of zero, and false otherwise.

-
Examples
+

Returns true if this String has a length of zero, and false otherwise.

+
Examples

Basic usage:

let mut v = String::new();
@@ -43,26 +49,1183 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +

Methods from Deref<Target = str>

Returns the length of self.

+

This length is in bytes, not chars or graphemes. In other words, +it might not be what a human considers the length of the string.

+
Examples
+

Basic usage:

+ +
let len = "foo".len();
+assert_eq!(3, len);
+
+assert_eq!("ƒoo".len(), 4); // fancy f!
+assert_eq!("ƒoo".chars().count(), 3);
+

Returns true if self has a length of zero bytes.

+
Examples
+

Basic usage:

+ +
let s = "";
+assert!(s.is_empty());
+
+let s = "not empty";
+assert!(!s.is_empty());
+

Checks that index-th byte is the first byte in a UTF-8 code point +sequence or the end of the string.

+

The start and end of the string (when index == self.len()) are +considered to be boundaries.

+

Returns false if index is greater than self.len().

+
Examples
+
let s = "Löwe 老虎 Léopard";
+assert!(s.is_char_boundary(0));
+// start of `老`
+assert!(s.is_char_boundary(6));
+assert!(s.is_char_boundary(s.len()));
+
+// second byte of `ö`
+assert!(!s.is_char_boundary(2));
+
+// third byte of `老`
+assert!(!s.is_char_boundary(8));
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not exceeding index where is_char_boundary(x) is true.

+

This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t +exceed a given number of bytes. Note that this is done purely at the character level +and can still visually split graphemes, even though the underlying characters aren’t +split. For example, the emoji 🧑‍🔬 (scientist) could be split so that the string only +includes 🧑 (person) instead.

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.floor_char_boundary(13);
+assert_eq!(closest, 10);
+assert_eq!(&s[..closest], "❤️🧡");
+
🔬 This is a nightly-only experimental API. (round_char_boundary)

Finds the closest x not below index where is_char_boundary(x) is true.

+

This method is the natural complement to floor_char_boundary. See that method +for more details.

+
Panics
+

Panics if index > self.len().

+
Examples
+
#![feature(round_char_boundary)]
+let s = "❤️🧡💛💚💙💜";
+assert_eq!(s.len(), 26);
+assert!(!s.is_char_boundary(13));
+
+let closest = s.ceil_char_boundary(13);
+assert_eq!(closest, 14);
+assert_eq!(&s[..closest], "❤️🧡💛");
+

Converts a string slice to a byte slice. To convert the byte slice back +into a string slice, use the from_utf8 function.

+
Examples
+

Basic usage:

+ +
let bytes = "bors".as_bytes();
+assert_eq!(b"bors", bytes);
+

Converts a string slice to a raw pointer.

+

As string slices are a slice of bytes, the raw pointer points to a +u8. This pointer will be pointing to the first byte of the string +slice.

+

The caller must ensure that the returned pointer is never written to. +If you need to mutate the contents of the string slice, use as_mut_ptr.

+
Examples
+

Basic usage:

+ +
let s = "Hello";
+let ptr = s.as_ptr();
+

Returns a subslice of str.

+

This is the non-panicking alternative to indexing the str. Returns +None whenever equivalent indexing operation would panic.

+
Examples
+
let v = String::from("🗻∈🌏");
+
+assert_eq!(Some("🗻"), v.get(0..4));
+
+// indices not on UTF-8 sequence boundaries
+assert!(v.get(1..).is_none());
+assert!(v.get(..8).is_none());
+
+// out of bounds
+assert!(v.get(..42).is_none());
+

Returns an unchecked subslice of str.

+

This is the unchecked alternative to indexing the str.

+
Safety
+

Callers of this function are responsible that these preconditions are +satisfied:

+
    +
  • The starting index must not exceed the ending index;
  • +
  • Indexes must be within bounds of the original slice;
  • +
  • Indexes must lie on UTF-8 sequence boundaries.
  • +
+

Failing that, the returned string slice may reference invalid memory or +violate the invariants communicated by the str type.

+
Examples
+
let v = "🗻∈🌏";
+unsafe {
+    assert_eq!("🗻", v.get_unchecked(0..4));
+    assert_eq!("∈", v.get_unchecked(4..7));
+    assert_eq!("🌏", v.get_unchecked(7..11));
+}
+
👎 Deprecated since 1.29.0:

use get_unchecked(begin..end) instead

+

Creates a string slice from another string slice, bypassing safety +checks.

+

This is generally not recommended, use with caution! For a safe +alternative see str and Index.

+

This new slice goes from begin to end, including begin but +excluding end.

+

To get a mutable string slice instead, see the +slice_mut_unchecked method.

+
Safety
+

Callers of this function are responsible that three preconditions are +satisfied:

+
    +
  • begin must not exceed end.
  • +
  • begin and end must be byte positions within the string slice.
  • +
  • begin and end must lie on UTF-8 sequence boundaries.
  • +
+
Examples
+

Basic usage:

+ +
let s = "Löwe 老虎 Léopard";
+
+unsafe {
+    assert_eq!("Löwe 老虎 Léopard", s.slice_unchecked(0, 21));
+}
+
+let s = "Hello, world!";
+
+unsafe {
+    assert_eq!("world", s.slice_unchecked(7, 12));
+}
+

Divide one string slice into two at an index.

+

The argument, mid, should be a byte offset from the start of the +string. It must also be on the boundary of a UTF-8 code point.

+

The two slices returned go from the start of the string slice to mid, +and from mid to the end of the string slice.

+

To get mutable string slices instead, see the split_at_mut +method.

+
Panics
+

Panics if mid is not on a UTF-8 code point boundary, or if it is +past the end of the last code point of the string slice.

+
Examples
+

Basic usage:

+ +
let s = "Per Martin-Löf";
+
+let (first, last) = s.split_at(3);
+
+assert_eq!("Per", first);
+assert_eq!(" Martin-Löf", last);
+

Returns an iterator over the chars of a string slice.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns such an iterator.

+

It’s important to remember that char represents a Unicode Scalar +Value, and might not match your idea of what a ‘character’ is. Iteration +over grapheme clusters may be what you actually want. This functionality +is not provided by Rust’s standard library, check crates.io instead.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.chars().count();
+assert_eq!(7, count);
+
+let mut chars = word.chars();
+
+assert_eq!(Some('g'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('o'), chars.next());
+assert_eq!(Some('d'), chars.next());
+assert_eq!(Some('b'), chars.next());
+assert_eq!(Some('y'), chars.next());
+assert_eq!(Some('e'), chars.next());
+
+assert_eq!(None, chars.next());
+

Remember, chars might not match your intuition about characters:

+ +
let y = "y̆";
+
+let mut chars = y.chars();
+
+assert_eq!(Some('y'), chars.next()); // not 'y̆'
+assert_eq!(Some('\u{0306}'), chars.next());
+
+assert_eq!(None, chars.next());
+

Returns an iterator over the chars of a string slice, and their +positions.

+

As a string slice consists of valid UTF-8, we can iterate through a +string slice by char. This method returns an iterator of both +these chars, as well as their byte positions.

+

The iterator yields tuples. The position is first, the char is +second.

+
Examples
+

Basic usage:

+ +
let word = "goodbye";
+
+let count = word.char_indices().count();
+assert_eq!(7, count);
+
+let mut char_indices = word.char_indices();
+
+assert_eq!(Some((0, 'g')), char_indices.next());
+assert_eq!(Some((1, 'o')), char_indices.next());
+assert_eq!(Some((2, 'o')), char_indices.next());
+assert_eq!(Some((3, 'd')), char_indices.next());
+assert_eq!(Some((4, 'b')), char_indices.next());
+assert_eq!(Some((5, 'y')), char_indices.next());
+assert_eq!(Some((6, 'e')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

Remember, chars might not match your intuition about characters:

+ +
let yes = "y̆es";
+
+let mut char_indices = yes.char_indices();
+
+assert_eq!(Some((0, 'y')), char_indices.next()); // not (0, 'y̆')
+assert_eq!(Some((1, '\u{0306}')), char_indices.next());
+
+// note the 3 here - the last character took up two bytes
+assert_eq!(Some((3, 'e')), char_indices.next());
+assert_eq!(Some((4, 's')), char_indices.next());
+
+assert_eq!(None, char_indices.next());
+

An iterator over the bytes of a string slice.

+

As a string slice consists of a sequence of bytes, we can iterate +through a string slice by byte. This method returns such an iterator.

+
Examples
+

Basic usage:

+ +
let mut bytes = "bors".bytes();
+
+assert_eq!(Some(b'b'), bytes.next());
+assert_eq!(Some(b'o'), bytes.next());
+assert_eq!(Some(b'r'), bytes.next());
+assert_eq!(Some(b's'), bytes.next());
+
+assert_eq!(None, bytes.next());
+

Splits a string slice by whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of whitespace.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space. If you only want to split on ASCII whitespace +instead, use split_ascii_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of whitespace are considered:

+ +
let mut iter = " Mary   had\ta\u{2009}little  \n\t lamb".split_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

Splits a string slice by ASCII whitespace.

+

The iterator returned will return string slices that are sub-slices of +the original string slice, separated by any amount of ASCII whitespace.

+

To split by Unicode Whitespace instead, use split_whitespace.

+
Examples
+

Basic usage:

+ +
let mut iter = "A few words".split_ascii_whitespace();
+
+assert_eq!(Some("A"), iter.next());
+assert_eq!(Some("few"), iter.next());
+assert_eq!(Some("words"), iter.next());
+
+assert_eq!(None, iter.next());
+

All kinds of ASCII whitespace are considered:

+ +
let mut iter = " Mary   had\ta little  \n\t lamb".split_ascii_whitespace();
+assert_eq!(Some("Mary"), iter.next());
+assert_eq!(Some("had"), iter.next());
+assert_eq!(Some("a"), iter.next());
+assert_eq!(Some("little"), iter.next());
+assert_eq!(Some("lamb"), iter.next());
+
+assert_eq!(None, iter.next());
+

An iterator over the lines of a string, as string slices.

+

Lines are ended with either a newline (\n) or a carriage return with +a line feed (\r\n).

+

The final line ending is optional. A string that ends with a final line +ending will return the same lines as an otherwise identical string +without a final line ending.

+
Examples
+

Basic usage:

+ +
let text = "foo\r\nbar\n\nbaz\n";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+

The final line ending isn’t required:

+ +
let text = "foo\nbar\n\r\nbaz";
+let mut lines = text.lines();
+
+assert_eq!(Some("foo"), lines.next());
+assert_eq!(Some("bar"), lines.next());
+assert_eq!(Some(""), lines.next());
+assert_eq!(Some("baz"), lines.next());
+
+assert_eq!(None, lines.next());
+
👎 Deprecated since 1.4.0:

use lines() instead now

+

An iterator over the lines of a string.

+

Returns an iterator of u16 over the string encoded as UTF-16.

+
Examples
+

Basic usage:

+ +
let text = "Zażółć gęślą jaźń";
+
+let utf8_len = text.len();
+let utf16_len = text.encode_utf16().count();
+
+assert!(utf16_len <= utf8_len);
+

Returns true if the given pattern matches a sub-slice of +this string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.contains("nana"));
+assert!(!bananas.contains("apples"));
+

Returns true if the given pattern matches a prefix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.starts_with("bana"));
+assert!(!bananas.starts_with("nana"));
+

Returns true if the given pattern matches a suffix of this +string slice.

+

Returns false if it does not.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Basic usage:

+ +
let bananas = "bananas";
+
+assert!(bananas.ends_with("anas"));
+assert!(!bananas.ends_with("nana"));
+

Returns the byte index of the first character of this string slice that +matches the pattern.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.find('L'), Some(0));
+assert_eq!(s.find('é'), Some(14));
+assert_eq!(s.find("pard"), Some(17));
+

More complex patterns using point-free style and closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.find(char::is_whitespace), Some(5));
+assert_eq!(s.find(char::is_lowercase), Some(1));
+assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1));
+assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.find(x), None);
+

Returns the byte index for the first character of the rightmost match of the pattern in +this string slice.

+

Returns None if the pattern doesn’t match.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
let s = "Löwe 老虎 Léopard Gepardi";
+
+assert_eq!(s.rfind('L'), Some(13));
+assert_eq!(s.rfind('é'), Some(14));
+assert_eq!(s.rfind("pard"), Some(24));
+

More complex patterns with closures:

+ +
let s = "Löwe 老虎 Léopard";
+
+assert_eq!(s.rfind(char::is_whitespace), Some(12));
+assert_eq!(s.rfind(char::is_lowercase), Some(20));
+

Not finding the pattern:

+ +
let s = "Löwe 老虎 Léopard";
+let x: &[_] = &['1', '2'];
+
+assert_eq!(s.rfind(x), None);
+

An iterator over substrings of this string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
+assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
+
+let v: Vec<&str> = "".split('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect();
+assert_eq!(v, ["lion", "", "tiger", "leopard"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+
+let v: Vec<&str> = "abc1def2ghi".split(char::is_numeric).collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+
+let v: Vec<&str> = "lionXtigerXleopard".split(char::is_uppercase).collect();
+assert_eq!(v, ["lion", "tiger", "leopard"]);
+

If the pattern is a slice of chars, split on each occurrence of any of the characters:

+ +
let v: Vec<&str> = "2020-11-03 23:59".split(&['-', ' ', ':', '@'][..]).collect();
+assert_eq!(v, ["2020", "11", "03", "23", "59"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".split(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "def", "ghi"]);
+

If a string contains multiple contiguous separators, you will end up +with empty strings in the output:

+ +
let x = "||||a||b|c".to_string();
+let d: Vec<_> = x.split('|').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

Contiguous separators are separated by the empty string.

+ +
let x = "(///)".to_string();
+let d: Vec<_> = x.split('/').collect();
+
+assert_eq!(d, &["(", "", "", ")"]);
+

Separators at the start or end of a string are neighbored +by empty strings.

+ +
let d: Vec<_> = "010".split("0").collect();
+assert_eq!(d, &["", "1", ""]);
+

When the empty string is used as a separator, it separates +every character in the string, along with the beginning +and end of the string.

+ +
let f: Vec<_> = "rust".split("").collect();
+assert_eq!(f, &["", "r", "u", "s", "t", ""]);
+

Contiguous separators can lead to possibly surprising behavior +when whitespace is used as the separator. This code is correct:

+ +
let x = "    a  b c".to_string();
+let d: Vec<_> = x.split(' ').collect();
+
+assert_eq!(d, &["", "", "", "", "a", "", "b", "c"]);
+

It does not give you:

+ +
assert_eq!(d, &["a", "b", "c"]);
+

Use split_whitespace for this behavior.

+

An iterator over substrings of this string slice, separated by +characters matched by a pattern. Differs from the iterator produced by +split in that split_inclusive leaves the matched part as the +terminator of the substring.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb."
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb."]);
+

If the last element of the string is matched, +that element will be considered the terminator of the preceding substring. +That substring will be the last item returned by the iterator.

+ +
let v: Vec<&str> = "Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
+    .split_inclusive('\n').collect();
+assert_eq!(v, ["Mary had a little lamb\n", "little lamb\n", "little lamb.\n"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplit(' ').collect();
+assert_eq!(v, ["lamb", "little", "a", "had", "Mary"]);
+
+let v: Vec<&str> = "".rsplit('X').collect();
+assert_eq!(v, [""]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplit('X').collect();
+assert_eq!(v, ["leopard", "tiger", "", "lion"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplit("::").collect();
+assert_eq!(v, ["leopard", "tiger", "lion"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplit(|c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "def", "abc"]);
+

An iterator over substrings of the given string slice, separated by +characters matched by a pattern.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring +is skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rsplit_terminator method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "A.B.".split_terminator('.').collect();
+assert_eq!(v, ["A", "B"]);
+
+let v: Vec<&str> = "A..B..".split_terminator(".").collect();
+assert_eq!(v, ["A", "", "B", ""]);
+
+let v: Vec<&str> = "A.B:C.D".split_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["A", "B", "C", "D"]);
+

An iterator over substrings of self, separated by characters +matched by a pattern and yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+

Equivalent to split, except that the trailing substring is +skipped if empty.

+

This method can be used for string data that is terminated, +rather than separated by a pattern.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a +reverse search, and it will be double ended if a forward/reverse +search yields the same elements.

+

For iterating from the front, the split_terminator method can be +used.

+
Examples
+
let v: Vec<&str> = "A.B.".rsplit_terminator('.').collect();
+assert_eq!(v, ["B", "A"]);
+
+let v: Vec<&str> = "A..B..".rsplit_terminator(".").collect();
+assert_eq!(v, ["", "B", "", "A"]);
+
+let v: Vec<&str> = "A.B:C.D".rsplit_terminator(&['.', ':'][..]).collect();
+assert_eq!(v, ["D", "C", "B", "A"]);
+

An iterator over substrings of the given string slice, separated by a +pattern, restricted to returning at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is +not efficient to support.

+

If the pattern allows a reverse search, the rsplitn method can be +used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lambda".splitn(3, ' ').collect();
+assert_eq!(v, ["Mary", "had", "a little lambda"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".splitn(3, "X").collect();
+assert_eq!(v, ["lion", "", "tigerXleopard"]);
+
+let v: Vec<&str> = "abcXdef".splitn(1, 'X').collect();
+assert_eq!(v, ["abcXdef"]);
+
+let v: Vec<&str> = "".splitn(1, 'X').collect();
+assert_eq!(v, [""]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".splitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["abc", "defXghi"]);
+

An iterator over substrings of this string slice, separated by a +pattern, starting from the end of the string, restricted to returning +at most n items.

+

If n substrings are returned, the last substring (the nth substring) +will contain the remainder of the string.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will not be double ended, because it is not +efficient to support.

+

For splitting from the front, the splitn method can be used.

+
Examples
+

Simple patterns:

+ +
let v: Vec<&str> = "Mary had a little lamb".rsplitn(3, ' ').collect();
+assert_eq!(v, ["lamb", "little", "Mary had a"]);
+
+let v: Vec<&str> = "lionXXtigerXleopard".rsplitn(3, 'X').collect();
+assert_eq!(v, ["leopard", "tiger", "lionX"]);
+
+let v: Vec<&str> = "lion::tiger::leopard".rsplitn(2, "::").collect();
+assert_eq!(v, ["leopard", "lion::tiger"]);
+

A more complex pattern, using a closure:

+ +
let v: Vec<&str> = "abc1defXghi".rsplitn(2, |c| c == '1' || c == 'X').collect();
+assert_eq!(v, ["ghi", "abc1def"]);
+

Splits the string on the first occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".split_once('='), None);
+assert_eq!("cfg=foo".split_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".split_once('='), Some(("cfg", "foo=bar")));
+

Splits the string on the last occurrence of the specified delimiter and +returns prefix before delimiter and suffix after delimiter.

+
Examples
+
assert_eq!("cfg".rsplit_once('='), None);
+assert_eq!("cfg=foo".rsplit_once('='), Some(("cfg", "foo")));
+assert_eq!("cfg=foo=bar".rsplit_once('='), Some(("cfg=foo", "bar")));
+

An iterator over the disjoint matches of a pattern within the given string +slice.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".matches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".matches(char::is_numeric).collect();
+assert_eq!(v, ["1", "2", "3"]);
+

An iterator over the disjoint matches of a pattern within this string slice, +yielded in reverse order.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the matches method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<&str> = "abcXXXabcYYYabc".rmatches("abc").collect();
+assert_eq!(v, ["abc", "abc", "abc"]);
+
+let v: Vec<&str> = "1abc2abc3".rmatches(char::is_numeric).collect();
+assert_eq!(v, ["3", "2", "1"]);
+

An iterator over the disjoint matches of a pattern within this string +slice as well as the index that the match starts at.

+

For matches of pat within self that overlap, only the indices +corresponding to the first match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator will be a DoubleEndedIterator if the pattern +allows a reverse search and forward/reverse search yields the same +elements. This is true for, e.g., char, but not for &str.

+

If the pattern allows a reverse search but its results might differ +from a forward search, the rmatch_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".match_indices("abc").collect();
+assert_eq!(v, [(0, "abc"), (6, "abc"), (12, "abc")]);
+
+let v: Vec<_> = "1abcabc2".match_indices("abc").collect();
+assert_eq!(v, [(1, "abc"), (4, "abc")]);
+
+let v: Vec<_> = "ababa".match_indices("aba").collect();
+assert_eq!(v, [(0, "aba")]); // only the first `aba`
+

An iterator over the disjoint matches of a pattern within self, +yielded in reverse order along with the index of the match.

+

For matches of pat within self that overlap, only the indices +corresponding to the last match are returned.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Iterator behavior
+

The returned iterator requires that the pattern supports a reverse +search, and it will be a DoubleEndedIterator if a forward/reverse +search yields the same elements.

+

For iterating from the front, the match_indices method can be used.

+
Examples
+

Basic usage:

+ +
let v: Vec<_> = "abcXXXabcYYYabc".rmatch_indices("abc").collect();
+assert_eq!(v, [(12, "abc"), (6, "abc"), (0, "abc")]);
+
+let v: Vec<_> = "1abcabc2".rmatch_indices("abc").collect();
+assert_eq!(v, [(4, "abc"), (1, "abc")]);
+
+let v: Vec<_> = "ababa".rmatch_indices("aba").collect();
+assert_eq!(v, [(2, "aba")]); // only the last `aba`
+

Returns a string slice with leading and trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld", s.trim());
+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!("Hello\tworld\t", s.trim_start());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('E') == s.trim_start().chars().next());
+
+let s = "  עברית  ";
+assert!(Some('ע') == s.trim_start().chars().next());
+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+assert_eq!(" Hello\tworld", s.trim_end());
+

Directionality:

+ +
let s = "  English  ";
+assert!(Some('h') == s.trim_end().chars().rev().next());
+
+let s = "  עברית  ";
+assert!(Some('ת') == s.trim_end().chars().rev().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_start

+

Returns a string slice with leading whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!("Hello\tworld\t", s.trim_left());
+

Directionality:

+ +
let s = "  English";
+assert!(Some('E') == s.trim_left().chars().next());
+
+let s = "  עברית";
+assert!(Some('ע') == s.trim_left().chars().next());
+
👎 Deprecated since 1.33.0:

superseded by trim_end

+

Returns a string slice with trailing whitespace removed.

+

‘Whitespace’ is defined according to the terms of the Unicode Derived +Core Property White_Space.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Basic usage:

+ +
let s = " Hello\tworld\t";
+
+assert_eq!(" Hello\tworld", s.trim_right());
+

Directionality:

+ +
let s = "English  ";
+assert!(Some('h') == s.trim_right().chars().rev().next());
+
+let s = "עברית  ";
+assert!(Some('ת') == s.trim_right().chars().rev().next());
+

Returns a string slice with all prefixes and suffixes that match a +pattern repeatedly removed.

+

The pattern can be a char, a slice of chars, or a function +or closure that determines if a character matches.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_matches('1'), "foo1bar");
+assert_eq!("123foo1bar123".trim_matches(char::is_numeric), "foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_matches(x), "foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1foo1barXX".trim_matches(|c| c == '1' || c == 'X'), "foo1bar");
+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. start in this context means the first +position of that byte string; for a left-to-right language like English or +Russian, this will be left side, and for right-to-left languages like +Arabic or Hebrew, this will be the right side.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_start_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_start_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_start_matches(x), "foo1bar12");
+

Returns a string slice with the prefix removed.

+

If the string starts with the pattern prefix, returns substring after the prefix, wrapped +in Some. Unlike trim_start_matches, this method removes the prefix exactly once.

+

If the string does not start with prefix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
+assert_eq!("foo:bar".strip_prefix("bar"), None);
+assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));
+

Returns a string slice with the suffix removed.

+

If the string ends with the pattern suffix, returns the substring before the suffix, +wrapped in Some. Unlike trim_end_matches, this method removes the suffix exactly once.

+

If the string does not end with suffix, returns None.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Examples
+
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
+assert_eq!("bar:foo".strip_suffix("bar"), None);
+assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));
+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. end in this context means the last +position of that byte string; for a left-to-right language like English or +Russian, this will be right side, and for right-to-left languages like +Arabic or Hebrew, this will be the left side.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_end_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_end_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_end_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_end_matches(|c| c == '1' || c == 'X'), "1foo");
+
👎 Deprecated since 1.33.0:

superseded by trim_start_matches

+

Returns a string slice with all prefixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Left’ in this context means the first +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the right side, not the left.

+
Examples
+

Basic usage:

+ +
assert_eq!("11foo1bar11".trim_left_matches('1'), "foo1bar11");
+assert_eq!("123foo1bar123".trim_left_matches(char::is_numeric), "foo1bar123");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_left_matches(x), "foo1bar12");
+
👎 Deprecated since 1.33.0:

superseded by trim_end_matches

+

Returns a string slice with all suffixes that match a pattern +repeatedly removed.

+

The pattern can be a &str, char, a slice of chars, or a +function or closure that determines if a character matches.

+
Text directionality
+

A string is a sequence of bytes. ‘Right’ in this context means the last +position of that byte string; for a language like Arabic or Hebrew +which are ‘right to left’ rather than ‘left to right’, this will be +the left side, not the right.

+
Examples
+

Simple patterns:

+ +
assert_eq!("11foo1bar11".trim_right_matches('1'), "11foo1bar");
+assert_eq!("123foo1bar123".trim_right_matches(char::is_numeric), "123foo1bar");
+
+let x: &[_] = &['1', '2'];
+assert_eq!("12foo1bar12".trim_right_matches(x), "12foo1bar");
+

A more complex pattern, using a closure:

+ +
assert_eq!("1fooX".trim_right_matches(|c| c == '1' || c == 'X'), "1foo");
+

Parses this string slice into another type.

+

Because parse is so general, it can cause problems with type +inference. As such, parse is one of the few times you’ll see +the syntax affectionately known as the ‘turbofish’: ::<>. This +helps the inference algorithm understand specifically which type +you’re trying to parse into.

+

parse can parse into any type that implements the FromStr trait.

+
Errors
+

Will return Err if it’s not possible to parse this string slice into +the desired type.

+
Examples
+

Basic usage

+ +
let four: u32 = "4".parse().unwrap();
+
+assert_eq!(4, four);
+

Using the ‘turbofish’ instead of annotating four:

+ +
let four = "4".parse::<u32>();
+
+assert_eq!(Ok(4), four);
+

Failing to parse:

+ +
let nope = "j".parse::<u32>();
+
+assert!(nope.is_err());
+

Checks if all characters in this string are within the ASCII range.

+
Examples
+
let ascii = "hello!\n";
+let non_ascii = "Grüße, Jürgen ❤";
+
+assert!(ascii.is_ascii());
+assert!(!non_ascii.is_ascii());
+

Checks that two strings are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
Examples
+
assert!("Ferris".eq_ignore_ascii_case("FERRIS"));
+assert!("Ferrös".eq_ignore_ascii_case("FERRöS"));
+assert!(!"Ferrös".eq_ignore_ascii_case("FERRÖS"));
+

Return an iterator that escapes each char in self with char::escape_debug.

+

Note: only extended grapheme codepoints that begin the string will be +escaped.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_debug() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_debug());
+

Both are equivalent to:

+ +
println!("❤\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_debug().to_string(), "❤\\n!");
+

Return an iterator that escapes each char in self with char::escape_default.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_default() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_default());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\n!");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_default().to_string(), "\\u{2764}\\n!");
+

Return an iterator that escapes each char in self with char::escape_unicode.

+
Examples
+

As an iterator:

+ +
for c in "❤\n!".escape_unicode() {
+    print!("{}", c);
+}
+println!();
+

Using println! directly:

+ +
println!("{}", "❤\n!".escape_unicode());
+

Both are equivalent to:

+ +
println!("\\u{{2764}}\\u{{a}}\\u{{21}}");
+

Using to_string:

+ +
assert_eq!("❤\n!".escape_unicode().to_string(), "\\u{2764}\\u{a}\\u{21}");
+

Replaces all matches of a pattern with another string.

+

replace creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice.

+
Examples
+

Basic usage:

+ +
let s = "this is old";
+
+assert_eq!("this is new", s.replace("old", "new"));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replace("cookie monster", "little lamb"));
+

Replaces first N matches of a pattern with another string.

+

replacen creates a new String, and copies the data from this string slice into it. +While doing so, it attempts to find matches of a pattern. If it finds any, it +replaces them with the replacement string slice at most count times.

+
Examples
+

Basic usage:

+ +
let s = "foo foo 123 foo";
+assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
+assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
+assert_eq!("foo foo new23 foo", s.replacen(char::is_numeric, "new", 1));
+

When the pattern doesn’t match:

+ +
let s = "this is old";
+assert_eq!(s, s.replacen("cookie monster", "little lamb", 10));
+

Returns the lowercase equivalent of this string slice, as a new String.

+

‘Lowercase’ is defined according to the terms of the Unicode Derived Core Property +Lowercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "HELLO";
+
+assert_eq!("hello", s.to_lowercase());
+

A tricky example, with sigma:

+ +
let sigma = "Σ";
+
+assert_eq!("σ", sigma.to_lowercase());
+
+// but at the end of a word, it's ς, not σ:
+let odysseus = "ὈΔΥΣΣΕΎΣ";
+
+assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
+

Languages without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_lowercase());
+

Returns the uppercase equivalent of this string slice, as a new String.

+

‘Uppercase’ is defined according to the terms of the Unicode Derived Core Property +Uppercase.

+

Since some characters can expand into multiple characters when changing +the case, this function returns a String instead of modifying the +parameter in-place.

+
Examples
+

Basic usage:

+ +
let s = "hello";
+
+assert_eq!("HELLO", s.to_uppercase());
+

Scripts without case are not changed:

+ +
let new_year = "农历新年";
+
+assert_eq!(new_year, new_year.to_uppercase());
+

One character can become multiple:

+ +
let s = "tschüß";
+
+assert_eq!("TSCHÜSS", s.to_uppercase());
+

Creates a new String by repeating a string n times.

+
Panics
+

This function will panic if the capacity would overflow.

+
Examples
+

Basic usage:

+ +
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
+

A panic upon overflow:

+ +
// this will panic at runtime
+let huge = "0123456789abcdef".repeat(usize::MAX);
+

Returns a copy of this string where each character is mapped to its +ASCII upper case equivalent.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To uppercase the value in-place, use make_ascii_uppercase.

+

To uppercase ASCII characters in addition to non-ASCII characters, use +to_uppercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());
+

Returns a copy of this string where each character is mapped to its +ASCII lower case equivalent.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To lowercase the value in-place, use make_ascii_lowercase.

+

To lowercase ASCII characters in addition to non-ASCII characters, use +to_lowercase.

+
Examples
+
let s = "Grüße, Jürgen ❤";
+
+assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());
+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/widget/struct.IndexPage.html b/mcaptcha/widget/struct.IndexPage.html index 9362d110..6104f5f7 100644 --- a/mcaptcha/widget/struct.IndexPage.html +++ b/mcaptcha/widget/struct.IndexPage.html @@ -1,29 +1,35 @@ -IndexPage in mcaptcha::widget - Rust

Struct mcaptcha::widget::IndexPage[][src]

pub struct IndexPage;

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Render the template and return the rendering result as RenderResult Read more

-

Render the template and append the result to buf. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +IndexPage in mcaptcha::widget - Rust + +
pub struct IndexPage;

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Render the template and return the rendering result as RenderResult Read more

+

Render the template and append the result to buf. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/mcaptcha/widget/struct.show_widget.html b/mcaptcha/widget/struct.show_widget.html index 91aa654f..ce5d7ac3 100644 --- a/mcaptcha/widget/struct.show_widget.html +++ b/mcaptcha/widget/struct.show_widget.html @@ -1,22 +1,29 @@ -show_widget in mcaptcha::widget - Rust

Struct mcaptcha::widget::show_widget[][src]

pub struct show_widget;
Expand description

render a client side widget for CAPTCHA verification

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +show_widget in mcaptcha::widget - Rust + +
pub struct show_widget;
Expand description

render a client side widget for CAPTCHA verification

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
\ No newline at end of file diff --git a/noscript.css b/noscript.css index aea68efb..8ad88640 100644 --- a/noscript.css +++ b/noscript.css @@ -1 +1 @@ - #main .attributes{margin-left:0 !important;}#copy-path{display:none;} \ No newline at end of file + #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}.sub{display:none;}#theme-picker{display:none;} \ No newline at end of file diff --git a/noto-sans-kr-regular.woff b/noto-sans-kr-regular.woff deleted file mode 100644 index 65e939c6b9f540950bc2bd4c41d60c556ddca6f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279528 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�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 MW?0TqY~sMIPWj7DXF|q=s_=V4 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 yX^`x54WoFoPUGK9?WHaX@1dxP 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%0DQQg@6nwCT?IH)Q`@+ z>b~?ewKVu1{0FZXvjj@yB#AnQ>^xsIYV?*nQ_%!R+I4_~!?YJsZQ76pR+9B?%{d`J z_DQp>*^vR>`_Ko6)9(Y{pF;L4#wA3RoY2cmU2F3NMYT(u9?#1PPU}vT=~z-eohos+vHWN3twka9&iaumsSd zEP$3|-2iJ`0}O6xRf22Jo`7YA(L}(QzW?No-Kx?JFK|am(`xBBioTw8P1qQykk zdlKbq1%>aO&zds9iV9G8w&&U0;v5w05SLynZ1+2@gKjt6*>4zfL+psO&rmAPNTqO+CShO ztgqiPzUOC60Xa5W6f38Kx%|@VVSQHJ^UlD1M{26Bn6(-TjU+KD*4C$8Yu7gW(n`f9 z_kuWmySAFiC|P_p`UmYD_j`M7MDA5_TirdEDmd~baaG*V?=vD8-jnl>=w&BZh@PNL zG(8~b_Gl?=#ArJG9%%QtcR7lZeWz5j8fg6v>TN^1J zx`K=fec;st{#`4u@FHG;dn?RjoK=Zja1u|B$HvbC$BvKs=m~Nc;24XOgP!!r$w4e| ztbj*JR8JH2y$1h{fnykCE0wj)`JF7J_TC?jrC0>{&TeKuKzpoEO zHk{~#DP0bnXCsQZb}4}V#1{}4?kf8+;|t+`s;CN{p3%>YY`j|O%^MmEIF!xo$s?&S z;H|a8cN&hnmAG13o&t>ge($$l*;k!AaE9z9ubS0qizmDGyOdI5L{Xu5PP$ZY|IZet0uuFX zpRQ6sI`7(0O^QS5uNYOaias9|ggySZ1uuxEXz-f$f5;;Ubm1$9LCq5pKoW@iQr&`D zBklG!=O4k2^?eKhs($Mkfielu%MiR#{Un}-ZV5a-$$+O6GS-l=!ivo6e~JJYnC73m z*kS8WSjEv7kg@WNd6uBSt><140QYh*PM+$8IG**eoy;@7yna&3kK#2uL{g!k-2_=FowSu-RBGA*tz@et z9p=Np#J>)}3mCrh{L@!W9OkIfa79)pzvy-X5D1ZY|&7^r? zhV)*Xh__^jFn5Z^mD(RkMFuv^G$9tYp8z5f9{NL}1x2Ku(O=x=<#R@(@ch6OJ>U|~ z^a1nW(B98!J6W}EzGXWWeSukm)Bh>hL0GT}Et)H}4c@CgAFQdmP~)$vA(3Uj4=G{U z(Z$Ccu-(3knC>M3&~7Ni*ZHm})H9twyCWVRH4@@qv__Jh4&mlLz}VL{JNL~lWRP)* zxJo}K21Y5IJ9RQ8dirM7WvL>No1oO*h{hZVrP{ii5QeTDd4x!<-zZSIne@CGcwU1y zB_dXK92bi;e5Wh{t4W4d1t0L0WdG)+sO!T5I!9)+b>LHv{UcKqtzY-G}4l#Dk_ zB-&iU#6G~>+k*Cdt0mP&TpHFu&xSokyg2$FifUem=g-tsa8ta2I@}|7j!Tfl(oE+s?n;Cw zjf8l-C6w%N2=l`>+@8sNtD~K9NnovUE+{G4u9IhOR_F?HGA4MfNf{)zrdN7PATWtj zn}QvO?FELt7B!B}1?{I5e8vtv)0Ov?caGy-QLJY=e|c{@JYgin6HODzc84${A`iEv zQr~KOIJlmi3&w;51E*R=VVOy_o=G2EnU!2xbfxls@`acU$%1!I(=66=oMUd*SIWcO zAbMT{Ja3|t@vGYne8LWc?I|hZP(Qg(q(@9sh4A8qVs2 zQ}Wp$fc_2M^RLV(&PTACn!2t*2TbSRvbNl{mwP=WHcVnS{wKrpO1xl^9zHAB$?*7z z$!1pY37zRdVop-&LYVtkh|^`^b3@@js`WT}3)ACba-4$5q_GF`*A%bDV+P=Z-^#Gj z)9Ht=n<77e;?*3MK`V1TaB#O>$TIlq=f@PGX!dxT`c?N02~Wk&mF3H$m08uF~J9qvacU=GgG?nySl?6C1aWV4W)kf4"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first){var search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){var elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}var query=getQuery(searchState.input.value);currentResults=query.id;var ret_others=addTab(results.others,query);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);var currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}var output="

Results for "+escape(query.query)+(query.type?" (type: "+escape(query.type)+")":"")+"

"+"
"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
";var resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;search.appendChild(resultsElem);searchState.focusedByTab=[null,null,null];searchState.showResults(search);var elems=document.getElementById("titles").childNodes;elems[0].onclick=function(){printTab(0)};elems[1].onclick=function(){printTab(1)};elems[2].onclick=function(){printTab(2)};printTab(currentTab)}function execSearch(query,searchWords,filterCrates){function getSmallest(arrays,positions,notDuplicates){var start=null;for(var it=0,len=positions.length;itpositions[it]&&(start===null||start>arrays[it][positions[it]].lev)&&!notDuplicates[arrays[it][positions[it]].fullPath]){start=arrays[it][positions[it]].lev}}return start}function mergeArrays(arrays){var ret=[];var positions=[];var notDuplicates={};for(var x=0,arrays_len=arrays.length;xpositions[x]&&arrays[x][positions[x]].lev===smallest&&!notDuplicates[arrays[x][positions[x]].fullPath]){ret.push(arrays[x][positions[x]]);notDuplicates[arrays[x][positions[x]].fullPath]=true;positions[x]+=1}}}return ret}function tokenizeQuery(raw){var i,matched;var l=raw.length;var depth=0;var nextAngle=/(<|>)/g;var ret=[];var start=0;for(i=0;i'){depth+=1}break;case">":if(depth>0){depth-=1}break;case",":if(depth===0){ret.push(raw.substring(start,i));start=i+1}break}}if(start!==i){ret.push(raw.substring(start,i))}return ret}var queries=tokenizeQuery(query.raw);var results={"in_args":[],"returned":[],"others":[],};for(var i=0,len=queries.length;i1){return{"in_args":mergeArrays(results.in_args),"returned":mergeArrays(results.returned),"others":mergeArrays(results.others),}}return{"in_args":results.in_args[0],"returned":results.returned[0],"others":results.others[0],}}function getFilterCrates(){var elem=document.getElementById("crate-search");if(elem&&elem.value!=="All crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return undefined}function search(e,forced){var params=searchState.getQueryStringParams();var query=getQuery(searchState.input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(!forced&&query.id===currentResults){if(query.query.length>0){searchState.putBackSearch(searchState.input)}return}searchState.title="Results for "+query.query+" - Rust";if(searchState.browserSupportsHistoryApi()){var newURL=getNakedUrl()+"?search="+encodeURIComponent(query.raw)+window.location.hash;if(!history.state&&!params.search){history.pushState(query,"",newURL)}else{history.replaceState(query,"",newURL)}}var filterCrates=getFilterCrates();showResults(execSearch(query,index,filterCrates),params.go_to_first)}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}var crateSize=0;searchWords.push(crate);var crateRow={crate:crate,ty:1,name:crate,path:"",desc:rawSearchIndex[crate].doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=rawSearchIndex[crate].t;var itemNames=rawSearchIndex[crate].n;var itemPaths=rawSearchIndex[crate].q;var itemDescs=rawSearchIndex[crate].d;var itemParentIdxs=rawSearchIndex[crate].i;var itemFunctionSearchTypes=rawSearchIndex[crate].f;var paths=rawSearchIndex[crate].p;var aliases=rawSearchIndex[crate].a;var len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]={};var j,local_aliases;for(var alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=function(){var qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}index=buildIndex(rawSearchIndex);registerSearchEvents();if(searchState.getQueryStringParams().search){search()}};if(window.searchIndex!==undefined){initSearch(window.searchIndex)}})() \ No newline at end of file +(function(){var itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function printTab(nb){if(nb===0||nb===1||nb===2){searchState.currentTab=nb}var nb_copy=nb;onEachLazy(document.getElementById("titles").childNodes,function(elem){if(nb_copy===0){addClass(elem,"selected")}else{removeClass(elem,"selected")}nb_copy-=1});onEachLazy(document.getElementById("results").childNodes,function(elem){if(nb===0){addClass(elem,"active")}else{removeClass(elem,"active")}nb-=1})}function removeEmptyStringsFromArray(x){for(var i=0,len=x.length;i-1){var obj=searchIndex[result.id];obj.lev=result.lev;var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates[obj.fullPath]){continue}duplicates[obj.fullPath]=true;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType){var ar=[];for(var entry in results){if(hasOwnPropertyRustdoc(results,entry)){var result=results[entry];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};ar.push(result)}}results=ar;if(results.length===0){return[]}results.sort(function(aaa,bbb){var a,b;a=(aaa.word!==val);b=(bbb.word!==val);if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==window.currentCrate);b=(bbb.item.crate!==window.currentCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});for(var i=0,len=results.length;i"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function checkGenerics(obj,val){var tmp_lev,elem_name;if(val.generics.length>0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);var elength=obj[GENERICS_DATA].length;for(var x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length>0){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length!==0){tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}}}else if(literalSearch){var found=false;if((!val.generics||val.generics.length===0)&&obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){found=obj[GENERICS_DATA].some(function(gen){return gen[NAME]===val.name})}return found?0:MAX_LEV_DISTANCE+1}lev_distance=Math.min(levenshtein(obj[NAME],val.name),lev_distance);if(lev_distance<=MAX_LEV_DISTANCE){lev_distance=Math.ceil((checkGenerics(obj,val)+lev_distance)/2)}if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var olength=obj[GENERICS_DATA].length;for(x=0;x0){var length=obj.type[INPUTS_DATA].length;for(var i=0;iOUTPUT_DATA){var ret=obj.type[OUTPUT_DATA];if(typeof ret[0]==="string"){ret=[ret]}for(var x=0,len=ret.length;xlength){return MAX_LEV_DISTANCE+1}for(var i=0;ilength){break}var lev_total=0;var aborted=false;for(var x=0;xMAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;var name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates){var aliases=[];var crateAliases=[];if(filterCrates!==null){if(ALIASES[filterCrates]&&ALIASES[filterCrates][query.search]){var query_aliases=ALIASES[filterCrates][query.search];var len=query_aliases.length;for(var i=0;iMAX_RESULTS){ret.others.pop()}};onEach(aliases,pushFunc);onEach(crateAliases,pushFunc)}function addIntoResults(isExact,res,fullId,id,index,lev){if(lev===0||(!isExact&&lev<=MAX_LEV_DISTANCE)){if(res[fullId]!==undefined){var result=res[fullId];if(result.dontValidate||result.lev<=lev){return}}res[fullId]={id:id,index:index,dontValidate:isExact,lev:lev,}}}var nSearchWords=searchWords.length;var i,it;var ty;var fullId;var returned;var in_args;var len;if((val.charAt(0)==="\""||val.charAt(0)==="'")&&val.charAt(val.length-1)===val.charAt(0)){val=extractGenerics(val.substr(1,val.length-2));for(i=0;i")>-1){var trimmer=function(s){return s.trim()};var parts=val.split("->").map(trimmer);var input=parts[0];var inputs=input.split(",").map(trimmer).sort();for(i=0,len=inputs.length;i0){firstNonZeroDistance=distance;break}}in_args=firstNonZeroDistance}addIntoResults(true,results_in_args,fullId,i,-1,in_args);addIntoResults(true,results_returned,fullId,i,-1,returned);if(is_module){addIntoResults(true,results,fullId,i,-1,0)}}}query.inputs=inputs.map(function(input){return input.name});query.output=output.name}else{query.inputs=[val];query.output=val;query.search=val;val=val.replace(/_/g,"");var valGenerics=extractGenerics(val);var paths=valLower.split("::");removeEmptyStringsFromArray(paths);val=paths[paths.length-1];var contains=paths.slice(0,paths.length>1?paths.length-1:1);var lev,j;for(j=0;j1){lev=checkPath(contains,paths[paths.length-1],ty);if(lev>MAX_LEV_DISTANCE){continue}else if(lev>0){lev_add=lev/10}}returned=MAX_LEV_DISTANCE+1;in_args=MAX_LEV_DISTANCE+1;var index=-1;lev=MAX_LEV_DISTANCE+1;fullId=ty.id;if(searchWords[j].indexOf(split[i])>-1||searchWords[j].indexOf(val)>-1||ty.normalizedName.indexOf(val)>-1){if(typePassesFilter(typeFilter,ty.ty)&&results[fullId]===undefined){index=ty.normalizedName.indexOf(val)}}if((lev=levenshtein(searchWords[j],val))<=MAX_LEV_DISTANCE){if(typePassesFilter(typeFilter,ty.ty)){lev+=1}else{lev=MAX_LEV_DISTANCE+1}}in_args=findArg(ty,valGenerics,false,typeFilter);returned=checkReturned(ty,valGenerics,false,typeFilter);lev+=lev_add;if(lev>0&&val.length>3&&searchWords[j].indexOf(val)>-1){if(val.length<6){lev-=1}else{lev=0}}addIntoResults(false,results_in_args,fullId,j,index,in_args);addIntoResults(false,results_returned,fullId,j,index,returned);if(typePassesFilter(typeFilter,ty.ty)&&(index!==-1||lev<=MAX_LEV_DISTANCE)){if(index!==-1&&paths.length<2){lev=0}addIntoResults(false,results,fullId,j,index,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results,false),};handleAliases(ret,query,filterCrates);return ret}function validateResult(name,path,keys,parent){for(var i=0,len=keys.length;i-1||path.indexOf(keys[i])>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(keys[i])>-1)||levenshtein(name,keys[i])<=MAX_LEV_DISTANCE)){return false}}return true}function getQuery(raw){var matches,type="",query;query=raw;matches=query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);if(matches){type=matches[1].replace(/^const$/,"constant");query=query.substring(matches[0].length)}return{raw:raw,query:query,type:type,id:query+type}}function nextTab(direction){var next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){var target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);if(target){target.focus()}}function buildHrefAndPath(item){var displayPath;var href;var type=itemTypes[item.ty];var name=item.name;var path=item.path;if(type==="mod"){displayPath=path+"::";href=window.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="primitive"||type==="keyword"){displayPath="";href=window.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=window.rootPath+name+"/index.html"}else if(item.parent!==undefined){var myparent=item.parent;var anchor="#"+type+"."+name;var parentType=itemTypes[myparent.ty];var pageType=parentType;var pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){var enumNameIdx=item.path.lastIndexOf("::");var enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=window.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=window.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function escape(content){var h1=document.createElement("h1");h1.textContent=content;return h1.innerHTML}function pathSplitter(path){var tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){var extraClass="";if(display===true){extraClass=" active"}var output=document.createElement("div");var length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(function(item){var name=item.name;var type=itemTypes[item.ty];length+=1;var extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}var link=document.createElement("a");link.className="result-"+type;link.href=item.href;var wrapper=document.createElement("div");var resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){var alias=document.createElement("span");alias.className="alias";var bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");wrapper.appendChild(resultName);var description=document.createElement("div");description.className="desc";var spanDesc=document.createElement("span");spanDesc.insertAdjacentHTML("beforeend",item.desc);description.appendChild(spanDesc);wrapper.appendChild(description);link.appendChild(wrapper);output.appendChild(link)})}else{output.className="search-failed"+extraClass;output.innerHTML="No results :(
"+"Try on DuckDuckGo?

"+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){var search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){var elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}var query=getQuery(searchState.input.value);currentResults=query.id;var ret_others=addTab(results.others,query,true);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);var currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(window.ALL_CRATES.length>1){crates=` in `}var output=`
+

Results for ${escape(query.query)} `+(query.type?" (type: "+escape(query.type)+")":"")+"

"+crates+`
`+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
";var resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;let crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.focusedByTab=[null,null,null];searchState.showResults(search);var elems=document.getElementById("titles").childNodes;elems[0].onclick=function(){printTab(0)};elems[1].onclick=function(){printTab(1)};elems[2].onclick=function(){printTab(2)};printTab(currentTab)}function execSearch(query,searchWords,filterCrates){query=query.raw.trim();var results={"in_args":[],"returned":[],"others":[],};if(query.length!==0){var tmp=execQuery(getQuery(query),searchWords,filterCrates);results.in_args.push(tmp.in_args);results.returned.push(tmp.returned);results.others.push(tmp.others)}return{"in_args":results.in_args[0],"returned":results.returned[0],"others":results.others[0],}}function search(e,forced){var params=searchState.getQueryStringParams();var query=getQuery(searchState.input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(!forced&&query.id===currentResults){if(query.query.length>0){putBackSearch()}return}var filterCrates=getFilterCrates();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.query+" - Rust";if(searchState.browserSupportsHistoryApi()){var newURL=buildUrl(query.raw,filterCrates);if(!history.state&&!params.search){history.pushState(null,"",newURL)}else{history.replaceState(null,"",newURL)}}showResults(execSearch(query,searchWords,filterCrates),params["go_to_first"],filterCrates)}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}var crateSize=0;var crateCorpus=rawSearchIndex[crate];searchWords.push(crate);var crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=crateCorpus.t;var itemNames=crateCorpus.n;var itemPaths=crateCorpus.q;var itemDescs=crateCorpus.d;var itemParentIdxs=crateCorpus.i;var itemFunctionSearchTypes=crateCorpus.f;var paths=crateCorpus.p;var aliases=crateCorpus.a;var len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]={};var j,local_aliases;for(var alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=function(){var qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="All crates"){var params=searchState.getQueryStringParams();var query=searchState.input.value.trim();if(!history.state&&!params.search){history.pushState(null,"",buildUrl(query,null))}else{history.replaceState(null,"",buildUrl(query,null))}}currentResults=null;search(undefined,true)}searchWords=buildIndex(rawSearchIndex);registerSearchEvents();function runSearchIfNeeded(){if(searchState.getQueryStringParams().search){search()}}runSearchIfNeeded()};if(window.searchIndex!==undefined){initSearch(window.searchIndex)}})() \ No newline at end of file diff --git a/settings.css b/settings.css index 67098658..35df7bce 100644 --- a/settings.css +++ b/settings.css @@ -1 +1 @@ -.setting-line{padding:5px;position:relative;}.setting-line>div{display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.setting-line>.title{font-size:19px;width:100%;max-width:none;border-bottom:1px solid;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{opacity:0;position:absolute;}.select-wrapper{float:right;position:relative;height:27px;min-width:25%;}.select-wrapper select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:none;border:2px solid #ccc;padding-right:28px;width:100%;}.select-wrapper img{pointer-events:none;position:absolute;right:0;bottom:0;background:#ccc;height:100%;width:28px;padding:0px 4px;}.select-wrapper select option{color:initial;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;} \ No newline at end of file +.setting-line{margin:0.6em 0 0.6em 0.3em;position:relative;}.setting-line>div{display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.setting-line>.title{font-size:19px;width:100%;max-width:none;border-bottom:1px solid;}.setting-line .radio-line,.setting-line .choices{display:flex;flex-wrap:wrap;}.setting-line .radio-line .setting-name{flex-grow:1;margin-top:auto;margin-bottom:auto;}.setting-line .radio-line input{margin-right:0.3em;}.radio-line .choice{border-radius:0.1em;border:1px solid;margin-left:0.5em;margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{opacity:0;position:absolute;}.select-wrapper{float:right;position:relative;height:27px;min-width:25%;}.select-wrapper select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:none;border:2px solid #ccc;padding-right:28px;width:100%;}.select-wrapper img{pointer-events:none;position:absolute;right:0;bottom:0;background:#ccc;height:100%;width:28px;padding:0px 4px;}.select-wrapper select option{color:initial;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;} \ No newline at end of file diff --git a/settings.html b/settings.html index dc34db31..a61cc312 100644 --- a/settings.html +++ b/settings.html @@ -1,4 +1,17 @@ -Rustdoc settings

Rustdoc settings

Theme preferences
Use system theme
Preferred dark theme
Preferred light theme
-
Auto-hide item contents for large items.
Auto-hide item methods' documentation
Auto-hide trait implementation documentation
Directly go to item in search if there is only one result
Show line numbers on code examples
Disable keyboard shortcuts
- +Rustdoc settings + +
+

Rustdoc settings

Back
Use system theme
Theme
Preferred light theme
Preferred dark theme
Auto-hide item contents for large items.
Auto-hide item methods' documentation
Auto-hide trait implementation documentation
Directly go to item in search if there is only one result
Show line numbers on code examples
Disable keyboard shortcuts
\ No newline at end of file diff --git a/settings.js b/settings.js index b4d6fdcd..80471891 100644 --- a/settings.js +++ b/settings.js @@ -1 +1 @@ -(function(){function changeSetting(settingName,value){updateLocalStorage("rustdoc-"+settingName,value);switch(settingName){case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function setEvents(){onEachLazy(document.getElementsByClassName("slider"),function(elem){var toggle=elem.previousElementSibling;var settingId=toggle.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(document.getElementsByClassName("select-wrapper"),function(elem){var select=elem.getElementsByTagName("select")[0];var settingId=select.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}})}window.addEventListener("DOMContentLoaded",setEvents)})() \ No newline at end of file +(function(){function changeSetting(settingName,value){updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();updateLightAndDark();break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){addClass(document.getElementById("theme").parentElement,"hidden");removeClass(document.getElementById("preferred-light-theme").parentElement,"hidden");removeClass(document.getElementById("preferred-dark-theme").parentElement,"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme").parentElement,"hidden");addClass(document.getElementById("preferred-dark-theme").parentElement,"hidden");removeClass(document.getElementById("theme").parentElement,"hidden")}function updateLightAndDark(){if(getSettingValue("use-system-theme")!=="false"){showLightAndDark()}else{hideLightAndDark()}}function setEvents(){updateLightAndDark();onEachLazy(document.getElementsByClassName("slider"),function(elem){var toggle=elem.previousElementSibling;var settingId=toggle.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(document.getElementsByClassName("select-wrapper"),function(elem){var select=elem.getElementsByTagName("select")[0];var settingId=select.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}});onEachLazy(document.querySelectorAll("input[type=\"radio\"]"),function(elem){const settingId=elem.name;const settingValue=getSettingValue(settingId);if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",function(ev){changeSetting(ev.target.name,ev.target.value)})});document.getElementById("back").addEventListener("click",function(){history.back()})}window.addEventListener("DOMContentLoaded",setEvents)})() \ No newline at end of file diff --git a/source-files.js b/source-files.js index 5312067d..707899c1 100644 --- a/source-files.js +++ b/source-files.js @@ -1,4 +1,4 @@ var N = null;var sourcesIndex = {}; -sourcesIndex["mcaptcha"] = {"name":"","dirs":[{"name":"api","dirs":[{"name":"v1","dirs":[{"name":"account","files":["delete.rs","email.rs","mod.rs","password.rs","secret.rs","username.rs"]},{"name":"mcaptcha","files":["create.rs","delete.rs","easy.rs","get.rs","mod.rs","stats.rs","update.rs"]},{"name":"notifications","files":["add.rs","get.rs","mark_read.rs","mod.rs"]},{"name":"pow","files":["get_config.rs","mod.rs","verify_pow.rs","verify_token.rs"]}],"files":["auth.rs","meta.rs","mod.rs","routes.rs"]}],"files":["mod.rs"]},{"name":"email","files":["mod.rs","verification.rs"]},{"name":"middleware","files":["auth.rs","mod.rs"]},{"name":"pages","dirs":[{"name":"auth","files":["login.rs","mod.rs","register.rs","sudo.rs"]},{"name":"panel","dirs":[{"name":"sitekey","files":["add.rs","delete.rs","edit.rs","list.rs","mod.rs","view.rs"]}],"files":["mod.rs","notifications.rs","settings.rs"]}],"files":["errors.rs","mod.rs","routes.rs","sitemap.rs"]},{"name":"static_assets","files":["filemap.rs","mod.rs","static_files.rs"]},{"name":"stats","files":["fetch.rs","mod.rs","record.rs"]},{"name":"widget","files":["mod.rs"]}],"files":["data.rs","date.rs","demo.rs","docs.rs","errors.rs","main.rs","routes.rs","settings.rs"]}; +sourcesIndex["mcaptcha"] = {"name":"","dirs":[{"name":"api","dirs":[{"name":"v1","dirs":[{"name":"account","files":["delete.rs","email.rs","mod.rs","password.rs","secret.rs","username.rs"]},{"name":"mcaptcha","files":["create.rs","delete.rs","easy.rs","get.rs","mod.rs","stats.rs","update.rs"]},{"name":"notifications","files":["add.rs","get.rs","mark_read.rs","mod.rs"]},{"name":"pow","files":["get_config.rs","mod.rs","verify_pow.rs","verify_token.rs"]}],"files":["auth.rs","meta.rs","mod.rs","routes.rs"]}],"files":["mod.rs"]},{"name":"email","files":["mod.rs","verification.rs"]},{"name":"pages","dirs":[{"name":"auth","files":["login.rs","mod.rs","register.rs","sudo.rs"]},{"name":"panel","dirs":[{"name":"sitekey","files":["add.rs","delete.rs","edit.rs","list.rs","mod.rs","view.rs"]}],"files":["mod.rs","notifications.rs","settings.rs"]}],"files":["errors.rs","mod.rs","routes.rs","sitemap.rs"]},{"name":"static_assets","files":["filemap.rs","mod.rs","static_files.rs"]},{"name":"stats","files":["fetch.rs","mod.rs","record.rs"]},{"name":"widget","files":["mod.rs"]}],"files":["data.rs","date.rs","demo.rs","docs.rs","errors.rs","main.rs","routes.rs","settings.rs"]}; sourcesIndex["tests_migrate"] = {"name":"","files":["settings.rs","tests-migrate.rs"]}; createSourceSidebar(); diff --git a/source-script.js b/source-script.js index 5dc8fee0..e01a7fe2 100644 --- a/source-script.js +++ b/source-script.js @@ -1 +1 @@ -(function(){function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i"){sidebar.style.left="";this.style.left="";child.innerText="<";updateLocalStorage("rustdoc-source-sidebar-show","true")}else{sidebar.style.left="-300px";this.style.left="0";child.innerText=">";updateLocalStorage("rustdoc-source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner1=document.createElement("div");inner1.style.position="relative";var inner2=document.createElement("div");inner2.style.paddingTop="3px";if(getCurrentValue("rustdoc-source-sidebar-show")==="true"){inner2.innerText="<"}else{inner2.innerText=">";sidebarToggle.style.left="0"}inner1.appendChild(inner2);sidebarToggle.appendChild(inner1);return sidebarToggle}function createSourceSidebar(){if(!window.rootPath.endsWith("/")){window.rootPath+="/"}var main=document.getElementById("main");var sidebarToggle=createSidebarToggle();main.insertBefore(sidebarToggle,main.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("rustdoc-source-sidebar-show")!=="true"){sidebar.style.left="-300px"}var currentFile=getCurrentFilePath();var hasFoundFile=false;var title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(function(key){sourcesIndex[key].name=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",currentFile,hasFoundFile)});main.insertBefore(sidebar,main.firstChild);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}var lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(scrollTo,match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(tocur_line_id){var tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",function(){var match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(false,match)}});onEachLazy(document.getElementsByClassName("line-numbers"),function(el){el.addEventListener("click",handleSourceHighlight)});highlightSourceLines(true);window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file +(function(){function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i"){sidebar.classList.add("expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{sidebar.classList.remove("expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner=document.createElement("div");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){if(!window.rootPath.endsWith("/")){window.rootPath+="/"}var container=document.querySelector("nav.sidebar");var sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("source-sidebar-show")!=="true"){container.classList.remove("expanded")}else{container.classList.add("expanded")}var currentFile=getCurrentFilePath();var hasFoundFile=false;var title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(function(key){sourcesIndex[key].name=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",currentFile,hasFoundFile)});container.appendChild(sidebar);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}var lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(scrollTo,match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(tocur_line_id){var tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",function(){var match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(false,match)}});onEachLazy(document.getElementsByClassName("line-numbers"),function(el){el.addEventListener("click",handleSourceHighlight)});highlightSourceLines(true);window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file diff --git a/src/mcaptcha/api/mod.rs.html b/src/mcaptcha/api/mod.rs.html index d0d71d51..fa1666c3 100644 --- a/src/mcaptcha/api/mod.rs.html +++ b/src/mcaptcha/api/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/account/delete.rs.html b/src/mcaptcha/api/v1/account/delete.rs.html index 19071624..58c26177 100644 --- a/src/mcaptcha/api/v1/account/delete.rs.html +++ b/src/mcaptcha/api/v1/account/delete.rs.html @@ -1,4 +1,9 @@ -delete.rs - source
 1
+delete.rs - source
+    
+    
 1
  2
  3
  4
@@ -100,7 +105,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.account.delete",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 pub async fn delete_account(
     id: Identity,
@@ -147,10 +152,9 @@
     }
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(delete_account);
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/account/email.rs.html b/src/mcaptcha/api/v1/account/email.rs.html index ca30eabe..ff743aa2 100644 --- a/src/mcaptcha/api/v1/account/email.rs.html +++ b/src/mcaptcha/api/v1/account/email.rs.html @@ -1,4 +1,9 @@ -email.rs - source
 1
+email.rs - source
+    
+    
 1
  2
  3
  4
@@ -149,7 +154,7 @@
 /// update email
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.account.update_email",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 async fn set_email(
     id: Identity,
@@ -182,11 +187,10 @@
     Ok(HttpResponse::Ok())
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(email_exists);
     cfg.service(set_email);
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/account/mod.rs.html b/src/mcaptcha/api/v1/account/mod.rs.html index 257721ba..27d9624d 100644 --- a/src/mcaptcha/api/v1/account/mod.rs.html +++ b/src/mcaptcha/api/v1/account/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -159,7 +164,7 @@
     pub exists: bool,
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     delete::services(cfg);
     email::services(cfg);
     username::services(cfg);
@@ -167,6 +172,5 @@
     password::services(cfg);
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/account/password.rs.html b/src/mcaptcha/api/v1/account/password.rs.html index 35d2f47d..ad859ede 100644 --- a/src/mcaptcha/api/v1/account/password.rs.html +++ b/src/mcaptcha/api/v1/account/password.rs.html @@ -1,4 +1,9 @@ -password.rs - source
  1
+password.rs - source
+    
+    
  1
   2
   3
   4
@@ -276,7 +281,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.account.update_password",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 async fn update_user_password(
     id: Identity,
@@ -312,7 +317,7 @@
     }
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(update_user_password);
 }
 
@@ -411,6 +416,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/account/secret.rs.html b/src/mcaptcha/api/v1/account/secret.rs.html index a09b8696..1fec54fe 100644 --- a/src/mcaptcha/api/v1/account/secret.rs.html +++ b/src/mcaptcha/api/v1/account/secret.rs.html @@ -1,4 +1,9 @@ -secret.rs - source
 1
+secret.rs - source
+    
+    
 1
  2
  3
  4
@@ -121,7 +126,7 @@
 
 #[my_codegen::get(
     path = "crate::V1_API_ROUTES.account.get_secret",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 async fn get_secret(id: Identity, data: AppData) -> ServiceResult<impl Responder> {
     let username = id.identity().unwrap();
@@ -139,7 +144,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.account.update_secret",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 async fn update_user_secret(
     id: Identity,
@@ -174,11 +179,10 @@
     Ok(HttpResponse::Ok())
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(get_secret);
     cfg.service(update_user_secret);
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/account/username.rs.html b/src/mcaptcha/api/v1/account/username.rs.html index 69f7441e..b1ccbe07 100644 --- a/src/mcaptcha/api/v1/account/username.rs.html +++ b/src/mcaptcha/api/v1/account/username.rs.html @@ -1,4 +1,9 @@ -username.rs - source
  1
+username.rs - source
+    
+    
  1
   2
   3
   4
@@ -177,7 +182,7 @@
 /// update username
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.account.update_username",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 async fn set_username(
     id: Identity,
@@ -214,11 +219,10 @@
     Ok(HttpResponse::Ok())
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(username_exists);
     cfg.service(set_username);
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/auth.rs.html b/src/mcaptcha/api/v1/auth.rs.html index 17b755a7..82240d69 100644 --- a/src/mcaptcha/api/v1/auth.rs.html +++ b/src/mcaptcha/api/v1/auth.rs.html @@ -1,4 +1,9 @@ -auth.rs - source
  1
+auth.rs - source
+    
+    
  1
   2
   3
   4
@@ -230,6 +235,35 @@
 230
 231
 232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -257,6 +291,8 @@
 use crate::AppData;
 
 pub mod routes {
+    use actix_auth_middleware::GetLoginRoute;
+
     pub struct Auth {
         pub logout: &'static str,
         pub login: &'static str,
@@ -275,6 +311,20 @@
             }
         }
     }
+
+    impl GetLoginRoute for Auth {
+        fn get_login_route(&self, src: Option<&str>) -> String {
+            if let Some(redirect_to) = src {
+                format!(
+                    "{}?redirect_to={}",
+                    self.login,
+                    urlencoding::encode(redirect_to)
+                )
+            } else {
+                self.login.to_string()
+            }
+        }
+    }
 }
 
 pub mod runners {
@@ -428,7 +478,7 @@
     }
 }
 
-pub fn services(cfg: &mut web::ServiceConfig) {
+pub fn services(cfg: &mut web::ServiceConfig) {
     cfg.service(register);
     cfg.service(login);
     cfg.service(signout);
@@ -446,14 +496,27 @@
 async fn login(
     id: Identity,
     payload: web::Json<runners::Login>,
+    query: web::Query<super::RedirectQuery>,
     data: AppData,
 ) -> ServiceResult<impl Responder> {
     let username = runners::login_runner(payload.into_inner(), &data).await?;
     id.remember(username);
-    Ok(HttpResponse::Ok())
+    //    Ok(HttpResponse::Ok())
+
+    let query = query.into_inner();
+    if let Some(redirect_to) = query.redirect_to {
+        Ok(HttpResponse::Found()
+            .append_header((header::LOCATION, redirect_to))
+            .finish())
+    } else {
+        Ok(HttpResponse::Ok().finish())
+    }
 }
 
-#[my_codegen::get(path = "crate::V1_API_ROUTES.auth.logout", wrap = "crate::CheckLogin")]
+#[my_codegen::get(
+    path = "crate::V1_API_ROUTES.auth.logout",
+    wrap = "crate::api::v1::get_middleware()"
+)]
 async fn signout(id: Identity) -> impl Responder {
     if id.identity().is_some() {
         id.forget();
@@ -463,6 +526,5 @@
         .finish()
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/create.rs.html b/src/mcaptcha/api/v1/mcaptcha/create.rs.html index ae87f9c1..248ce3df 100644 --- a/src/mcaptcha/api/v1/mcaptcha/create.rs.html +++ b/src/mcaptcha/api/v1/mcaptcha/create.rs.html @@ -1,4 +1,9 @@ -create.rs - source
  1
+create.rs - source
+    
+    
  1
   2
   3
   4
@@ -195,7 +200,7 @@
 // so that the whole thing can be added/udpaed in a single stroke
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.captcha.create",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 pub async fn create(
     payload: web::Json<CreateCaptcha>,
@@ -305,6 +310,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/delete.rs.html b/src/mcaptcha/api/v1/mcaptcha/delete.rs.html index 185a4150..e908d1a1 100644 --- a/src/mcaptcha/api/v1/mcaptcha/delete.rs.html +++ b/src/mcaptcha/api/v1/mcaptcha/delete.rs.html @@ -1,4 +1,9 @@ -delete.rs - source
 1
+delete.rs - source
+    
+    
 1
  2
  3
  4
@@ -125,7 +130,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.captcha.delete",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 async fn delete(
     payload: web::Json<DeleteCaptcha>,
@@ -189,6 +194,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/easy.rs.html b/src/mcaptcha/api/v1/mcaptcha/easy.rs.html index 08b68464..f7b9e98f 100644 --- a/src/mcaptcha/api/v1/mcaptcha/easy.rs.html +++ b/src/mcaptcha/api/v1/mcaptcha/easy.rs.html @@ -1,4 +1,9 @@ -easy.rs - source
  1
+easy.rs - source
+    
+    
  1
   2
   3
   4
@@ -467,7 +472,7 @@
     }
 }
 
-pub fn services(cfg: &mut web::ServiceConfig) {
+pub fn services(cfg: &mut web::ServiceConfig) {
     cfg.service(update);
     cfg.service(create);
 }
@@ -521,7 +526,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.captcha.easy.create",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 async fn create(
     payload: web::Json<TrafficPattern>,
@@ -574,7 +579,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.captcha.easy.update",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 async fn update(
     payload: web::Json<UpdateTrafficPattern>,
@@ -849,6 +854,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/get.rs.html b/src/mcaptcha/api/v1/mcaptcha/get.rs.html index bfc2b35b..ced75cc2 100644 --- a/src/mcaptcha/api/v1/mcaptcha/get.rs.html +++ b/src/mcaptcha/api/v1/mcaptcha/get.rs.html @@ -1,4 +1,9 @@ -get.rs - source
 1
+get.rs - source
+    
+    
 1
  2
  3
  4
@@ -101,7 +106,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.captcha.get",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 pub async fn get_captcha(
     payload: web::Json<MCaptchaDetails>,
@@ -151,6 +156,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/mod.rs.html b/src/mcaptcha/api/v1/mcaptcha/mod.rs.html index 61890024..5e81e942 100644 --- a/src/mcaptcha/api/v1/mcaptcha/mod.rs.html +++ b/src/mcaptcha/api/v1/mcaptcha/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -116,7 +121,7 @@
         .collect::<String>()
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     easy::services(cfg);
     cfg.service(stats::get);
     cfg.service(create::create);
@@ -155,6 +160,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/stats.rs.html b/src/mcaptcha/api/v1/mcaptcha/stats.rs.html index ff98f1ad..fbe565b8 100644 --- a/src/mcaptcha/api/v1/mcaptcha/stats.rs.html +++ b/src/mcaptcha/api/v1/mcaptcha/stats.rs.html @@ -1,4 +1,9 @@ -stats.rs - source
 1
+stats.rs - source
+    
+    
 1
  2
  3
  4
@@ -98,7 +103,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.captcha.stats.get",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 pub async fn get(
     payload: web::Json<StatsPayload>,
@@ -111,6 +116,5 @@
     Ok(HttpResponse::Ok().json(&stats))
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/update.rs.html b/src/mcaptcha/api/v1/mcaptcha/update.rs.html index 95d307a5..3af5221b 100644 --- a/src/mcaptcha/api/v1/mcaptcha/update.rs.html +++ b/src/mcaptcha/api/v1/mcaptcha/update.rs.html @@ -1,4 +1,9 @@ -update.rs - source
  1
+update.rs - source
+    
+    
  1
   2
   3
   4
@@ -293,7 +298,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.captcha.update_key",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 pub async fn update_key(
     payload: web::Json<MCaptchaDetails>,
@@ -343,7 +348,7 @@
 
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.captcha.update",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 pub async fn update_captcha(
     payload: web::Json<UpdateCaptcha>,
@@ -527,6 +532,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/meta.rs.html b/src/mcaptcha/api/v1/meta.rs.html index 5befbecf..a0a19655 100644 --- a/src/mcaptcha/api/v1/meta.rs.html +++ b/src/mcaptcha/api/v1/meta.rs.html @@ -1,4 +1,9 @@ -meta.rs - source
  1
+meta.rs - source
+    
+    
  1
   2
   3
   4
@@ -251,7 +256,7 @@
     HttpResponse::Ok().json(resp_builder.build().unwrap())
 }
 
-pub fn services(cfg: &mut web::ServiceConfig) {
+pub fn services(cfg: &mut web::ServiceConfig) {
     cfg.service(build_details);
     cfg.service(health);
 }
@@ -299,6 +304,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/mod.rs.html b/src/mcaptcha/api/v1/mod.rs.html index bf9b2d3b..3bce5911 100644 --- a/src/mcaptcha/api/v1/mod.rs.html +++ b/src/mcaptcha/api/v1/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -38,6 +43,17 @@
 38
 39
 40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
 
/*
 * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
 *
@@ -55,7 +71,9 @@
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
 
+use actix_auth_middleware::Authentication;
 use actix_web::web::ServiceConfig;
+use serde::Deserialize;
 
 pub mod account;
 pub mod auth;
@@ -67,7 +85,7 @@
 
 pub use routes::ROUTES;
 
-pub fn services(cfg: &mut ServiceConfig) {
+pub fn services(cfg: &mut ServiceConfig) {
     meta::services(cfg);
     pow::services(cfg);
     auth::services(cfg);
@@ -76,9 +94,17 @@
     notifications::services(cfg);
 }
 
+#[derive(Deserialize)]
+pub struct RedirectQuery {
+    pub redirect_to: Option<String>,
+}
+
+pub fn get_middleware() -> Authentication<routes::Routes> {
+    Authentication::with_identity(ROUTES)
+}
+
 #[cfg(test)]
 mod tests;
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/notifications/add.rs.html b/src/mcaptcha/api/v1/notifications/add.rs.html index 8e9e36c7..c153e179 100644 --- a/src/mcaptcha/api/v1/notifications/add.rs.html +++ b/src/mcaptcha/api/v1/notifications/add.rs.html @@ -1,4 +1,9 @@ -add.rs - source
  1
+add.rs - source
+    
+    
  1
   2
   3
   4
@@ -138,7 +143,7 @@
 /// route handler that adds a notification message
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.notifications.add",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 pub async fn add_notification(
     payload: web::Json<AddNotification>,
@@ -211,6 +216,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/notifications/get.rs.html b/src/mcaptcha/api/v1/notifications/get.rs.html index d308a28f..b0a08f5c 100644 --- a/src/mcaptcha/api/v1/notifications/get.rs.html +++ b/src/mcaptcha/api/v1/notifications/get.rs.html @@ -1,4 +1,9 @@ -get.rs - source
  1
+get.rs - source
+    
+    
  1
   2
   3
   4
@@ -220,7 +225,7 @@
 /// route handler that gets all unread notifications
 #[my_codegen::get(
     path = "crate::V1_API_ROUTES.notifications.get",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 pub async fn get_notification(
     data: AppData,
@@ -329,6 +334,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/notifications/mark_read.rs.html b/src/mcaptcha/api/v1/notifications/mark_read.rs.html index 818eaec5..f48f2546 100644 --- a/src/mcaptcha/api/v1/notifications/mark_read.rs.html +++ b/src/mcaptcha/api/v1/notifications/mark_read.rs.html @@ -1,4 +1,9 @@ -mark_read.rs - source
  1
+mark_read.rs - source
+    
+    
  1
   2
   3
   4
@@ -194,7 +199,7 @@
 /// route handler that marks a notification read
 #[my_codegen::post(
     path = "crate::V1_API_ROUTES.notifications.mark_read",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::api::v1::get_middleware()"
 )]
 pub async fn mark_read(
     data: AppData,
@@ -309,6 +314,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/notifications/mod.rs.html b/src/mcaptcha/api/v1/notifications/mod.rs.html index f204a27c..1cf43a9f 100644 --- a/src/mcaptcha/api/v1/notifications/mod.rs.html +++ b/src/mcaptcha/api/v1/notifications/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -83,12 +88,11 @@
     }
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(add::add_notification);
     cfg.service(get::get_notification);
     cfg.service(mark_read::mark_read);
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/pow/get_config.rs.html b/src/mcaptcha/api/v1/pow/get_config.rs.html index c00f62be..ad869ea3 100644 --- a/src/mcaptcha/api/v1/pow/get_config.rs.html +++ b/src/mcaptcha/api/v1/pow/get_config.rs.html @@ -1,4 +1,9 @@ -get_config.rs - source
  1
+get_config.rs - source
+    
+    
  1
   2
   3
   4
@@ -381,6 +386,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/pow/mod.rs.html b/src/mcaptcha/api/v1/pow/mod.rs.html index 524351ce..2d649feb 100644 --- a/src/mcaptcha/api/v1/pow/mod.rs.html +++ b/src/mcaptcha/api/v1/pow/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -119,7 +124,7 @@
 
 pub use super::mcaptcha::get::I32Levels;
 
-pub fn services(cfg: &mut web::ServiceConfig) {
+pub fn services(cfg: &mut web::ServiceConfig) {
     let cors = actix_cors::Cors::default()
         .allow_any_origin()
         .allowed_methods(vec!["POST", "GET"])
@@ -191,6 +196,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/pow/verify_pow.rs.html b/src/mcaptcha/api/v1/pow/verify_pow.rs.html index bf864671..35dbaf35 100644 --- a/src/mcaptcha/api/v1/pow/verify_pow.rs.html +++ b/src/mcaptcha/api/v1/pow/verify_pow.rs.html @@ -1,4 +1,9 @@ -verify_pow.rs - source
  1
+verify_pow.rs - source
+    
+    
  1
   2
   3
   4
@@ -269,6 +274,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/pow/verify_token.rs.html b/src/mcaptcha/api/v1/pow/verify_token.rs.html index 606c1d17..019fc6d3 100644 --- a/src/mcaptcha/api/v1/pow/verify_token.rs.html +++ b/src/mcaptcha/api/v1/pow/verify_token.rs.html @@ -1,4 +1,9 @@ -verify_token.rs - source
  1
+verify_token.rs - source
+    
+    
  1
   2
   3
   4
@@ -317,6 +322,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/api/v1/routes.rs.html b/src/mcaptcha/api/v1/routes.rs.html index d476da48..13793398 100644 --- a/src/mcaptcha/api/v1/routes.rs.html +++ b/src/mcaptcha/api/v1/routes.rs.html @@ -1,4 +1,9 @@ -routes.rs - source
 1
+routes.rs - source
+    
+    
 1
  2
  3
  4
@@ -45,6 +50,13 @@
 45
 46
 47
+48
+49
+50
+51
+52
+53
+54
 
/*
 * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
 *
@@ -61,6 +73,7 @@
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
+use actix_auth_middleware::GetLoginRoute;
 
 use super::account::routes::Account;
 use super::auth::routes::Auth;
@@ -92,7 +105,12 @@
         }
     }
 }
+
+impl GetLoginRoute for Routes {
+    fn get_login_route(&self, src: Option<&str>) -> String {
+        self.auth.get_login_route(src)
+    }
+}
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/data.rs.html b/src/mcaptcha/data.rs.html index 9a6ea1ca..7a547889 100644 --- a/src/mcaptcha/data.rs.html +++ b/src/mcaptcha/data.rs.html @@ -1,4 +1,9 @@ -data.rs - source
  1
+data.rs - source
+    
+    
  1
   2
   3
   4
@@ -445,6 +450,5 @@
 /// Mailer data type AsyncSmtpTransport<Tokio1Executor>
 pub type Mailer = AsyncSmtpTransport<Tokio1Executor>;
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/date.rs.html b/src/mcaptcha/date.rs.html index 290c14a7..8d33e24d 100644 --- a/src/mcaptcha/date.rs.html +++ b/src/mcaptcha/date.rs.html @@ -1,4 +1,9 @@ -date.rs - source
  1
+date.rs - source
+    
+    
  1
   2
   3
   4
@@ -133,7 +138,7 @@
 }
 
 impl Debug for Date {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
         f.debug_struct("Date")
             .field("time", &self.print_date())
             .finish()
@@ -217,6 +222,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/demo.rs.html b/src/mcaptcha/demo.rs.html index e5394a61..dae0e083 100644 --- a/src/mcaptcha/demo.rs.html +++ b/src/mcaptcha/demo.rs.html @@ -1,4 +1,9 @@ -demo.rs - source
  1
+demo.rs - source
+    
+    
  1
   2
   3
   4
@@ -337,6 +342,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/docs.rs.html b/src/mcaptcha/docs.rs.html index 44ad0a06..e40a4afd 100644 --- a/src/mcaptcha/docs.rs.html +++ b/src/mcaptcha/docs.rs.html @@ -1,4 +1,9 @@ -docs.rs - source
  1
+docs.rs - source
+    
+    
  1
   2
   3
   4
@@ -130,6 +135,10 @@
 130
 131
 132
+133
+134
+135
+136
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -148,7 +157,7 @@
  */
 use std::borrow::Cow;
 
-use actix_web::body::AnyBody;
+use actix_web::body::BoxBody;
 use actix_web::{http::header, web, HttpResponse, Responder};
 use mime_guess::from_path;
 use rust_embed::RustEmbed;
@@ -175,7 +184,7 @@
     }
 }
 
-pub fn services(cfg: &mut web::ServiceConfig) {
+pub fn services(cfg: &mut web::ServiceConfig) {
     cfg.service(index).service(spec).service(dist);
 }
 
@@ -186,12 +195,15 @@
 pub fn handle_embedded_file(path: &str) -> HttpResponse {
     match Asset::get(path) {
         Some(content) => {
-            let body: AnyBody = match content.data {
-                Cow::Borrowed(bytes) => bytes.into(),
-                Cow::Owned(bytes) => bytes.into(),
+            let body: BoxBody = match content.data {
+                Cow::Borrowed(bytes) => BoxBody::new(bytes),
+                Cow::Owned(bytes) => BoxBody::new(bytes),
             };
+
             HttpResponse::Ok()
                 .insert_header(header::CacheControl(vec![
+                    header::CacheDirective::Public,
+                    header::CacheDirective::Extension("immutable".into(), None),
                     header::CacheDirective::MaxAge(CACHE_AGE),
                 ]))
                 .content_type(from_path(path).first_or_octet_stream().as_ref())
@@ -201,6 +213,7 @@
     }
 }
 
+
 #[my_codegen::get(path = "DOCS.assets")]
 async fn dist(path: web::Path<String>) -> impl Responder {
     handle_embedded_file(&path)
@@ -263,6 +276,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/email/mod.rs.html b/src/mcaptcha/email/mod.rs.html index f1754d73..f3a44a8e 100644 --- a/src/mcaptcha/email/mod.rs.html +++ b/src/mcaptcha/email/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -35,6 +40,5 @@
 
 pub mod verification;
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/email/verification.rs.html b/src/mcaptcha/email/verification.rs.html index 9ff2fff4..ebb67f07 100644 --- a/src/mcaptcha/email/verification.rs.html +++ b/src/mcaptcha/email/verification.rs.html @@ -1,4 +1,9 @@ -verification.rs - source
  1
+verification.rs - source
+    
+    
  1
   2
   3
   4
@@ -259,6 +264,5 @@ project website: {}",
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/errors.rs.html b/src/mcaptcha/errors.rs.html index 06e6f450..40fdaf5a 100644 --- a/src/mcaptcha/errors.rs.html +++ b/src/mcaptcha/errors.rs.html @@ -1,4 +1,9 @@ -errors.rs - source
  1
+errors.rs - source
+    
+    
  1
   2
   3
   4
@@ -625,6 +630,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/main.rs.html b/src/mcaptcha/main.rs.html index 3d078f70..14d611cc 100644 --- a/src/mcaptcha/main.rs.html +++ b/src/mcaptcha/main.rs.html @@ -1,4 +1,9 @@ -main.rs - source
  1
+main.rs - source
+    
+    
  1
   2
   3
   4
@@ -186,8 +191,6 @@
 186
 187
 188
-189
-190
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -222,7 +225,6 @@
 mod docs;
 mod email;
 mod errors;
-mod middleware;
 #[macro_use]
 mod pages;
 #[macro_use]
@@ -245,7 +247,6 @@
 pub use widget::WIDGET_ROUTES;
 
 use crate::demo::DemoUser;
-pub use crate::middleware::auth::CheckLogin;
 
 lazy_static! {
     pub static ref SETTINGS: Settings = Settings::new().unwrap();
@@ -379,6 +380,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/middleware/auth.rs.html b/src/mcaptcha/middleware/auth.rs.html deleted file mode 100644 index 2f371637..00000000 --- a/src/mcaptcha/middleware/auth.rs.html +++ /dev/null @@ -1,166 +0,0 @@ -auth.rs - source
 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-
/*
-* Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Affero General Public License as
-* published by the Free Software Foundation, either version 3 of the
-* License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU Affero General Public License for more details.
-*
-* You should have received a copy of the GNU Affero General Public License
-* along with this program.  If not, see <https://www.gnu.org/licenses/>.
-*/
-#![allow(clippy::type_complexity)]
-
-use actix_http::body::AnyBody;
-use actix_identity::Identity;
-use actix_service::{Service, Transform};
-use actix_web::dev::{ServiceRequest, ServiceResponse};
-use actix_web::{http, Error, FromRequest, HttpResponse};
-
-use futures::future::{ok, Either, Ready};
-
-use crate::PAGES;
-
-pub struct CheckLogin;
-
-impl<S> Transform<S, ServiceRequest> for CheckLogin
-where
-    S: Service<ServiceRequest, Response = ServiceResponse<AnyBody>, Error = Error>,
-    S::Future: 'static,
-{
-    type Response = ServiceResponse<AnyBody>;
-    type Error = Error;
-    type Transform = CheckLoginMiddleware<S>;
-    type InitError = ();
-    type Future = Ready<Result<Self::Transform, Self::InitError>>;
-
-    fn new_transform(&self, service: S) -> Self::Future {
-        ok(CheckLoginMiddleware { service })
-    }
-}
-pub struct CheckLoginMiddleware<S> {
-    service: S,
-}
-
-impl<S> Service<ServiceRequest> for CheckLoginMiddleware<S>
-where
-    S: Service<ServiceRequest, Response = ServiceResponse<AnyBody>, Error = Error>,
-    S::Future: 'static,
-{
-    type Response = ServiceResponse<AnyBody>;
-    type Error = Error;
-    type Future = Either<S::Future, Ready<Result<Self::Response, Self::Error>>>;
-
-    actix_service::forward_ready!(service);
-
-    fn call(&self, req: ServiceRequest) -> Self::Future {
-        let (r, mut pl) = req.into_parts();
-
-        // TODO investigate when the bellow statement will
-        // return error
-        if let Ok(Some(_)) = Identity::from_request(&r, &mut pl)
-            .into_inner()
-            .map(|x| x.identity())
-        {
-            let req = ServiceRequest::from_parts(r, pl);
-            Either::Left(self.service.call(req))
-        } else {
-            let req = ServiceRequest::from_parts(r, pl); //.ok().unwrap();
-            Either::Right(ok(req.into_response(
-                HttpResponse::Found()
-                    .insert_header((http::header::LOCATION, PAGES.auth.login))
-                    .finish(),
-            )))
-        }
-    }
-}
-
-
- - \ No newline at end of file diff --git a/src/mcaptcha/middleware/mod.rs.html b/src/mcaptcha/middleware/mod.rs.html deleted file mode 100644 index dd5f26ce..00000000 --- a/src/mcaptcha/middleware/mod.rs.html +++ /dev/null @@ -1,40 +0,0 @@ -mod.rs - source
 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-
/*
-* Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Affero General Public License as
-* published by the Free Software Foundation, either version 3 of the
-* License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU Affero General Public License for more details.
-*
-* You should have received a copy of the GNU Affero General Public License
-* along with this program.  If not, see <https://www.gnu.org/licenses/>.
-*/
-
-pub mod auth;
-
-
- - \ No newline at end of file diff --git a/src/mcaptcha/pages/auth/login.rs.html b/src/mcaptcha/pages/auth/login.rs.html index 8e25dd89..ebffc033 100644 --- a/src/mcaptcha/pages/auth/login.rs.html +++ b/src/mcaptcha/pages/auth/login.rs.html @@ -1,4 +1,9 @@ -login.rs - source
 1
+login.rs - source
+    
+    
 1
  2
  3
  4
@@ -43,6 +48,7 @@
 43
 44
 45
+46
 
/*
 * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
 *
@@ -65,6 +71,7 @@
 use my_codegen::get;
 use sailfish::TemplateOnce;
 
+use crate::api::v1::RedirectQuery;
 use crate::PAGES;
 
 #[derive(Clone, TemplateOnce)]
@@ -86,9 +93,8 @@
 pub async fn login() -> impl Responder {
     HttpResponse::Ok()
         .content_type("text/html; charset=utf-8")
-        .body(&*INDEX)
+        .body(&**INDEX)
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/auth/mod.rs.html b/src/mcaptcha/pages/auth/mod.rs.html index bba97142..60b3e9c3 100644 --- a/src/mcaptcha/pages/auth/mod.rs.html +++ b/src/mcaptcha/pages/auth/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -43,6 +48,22 @@
 43
 44
 45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
 
/*
 * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
 *
@@ -64,12 +85,14 @@
 pub mod register;
 pub mod sudo;
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(login::login);
     cfg.service(register::join);
 }
 
 pub mod routes {
+    use actix_auth_middleware::GetLoginRoute;
+
     pub struct Auth {
         pub login: &'static str,
         pub join: &'static str,
@@ -87,8 +110,21 @@
             [AUTH.login, AUTH.join]
         }
     }
+
+    impl GetLoginRoute for Auth {
+        fn get_login_route(&self, src: Option<&str>) -> String {
+            if let Some(redirect_to) = src {
+                format!(
+                    "{}?redirect_to={}",
+                    self.login,
+                    urlencoding::encode(redirect_to)
+                )
+            } else {
+                self.login.to_string()
+            }
+        }
+    }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/auth/register.rs.html b/src/mcaptcha/pages/auth/register.rs.html index d6b85e06..d03f2189 100644 --- a/src/mcaptcha/pages/auth/register.rs.html +++ b/src/mcaptcha/pages/auth/register.rs.html @@ -1,4 +1,9 @@ -register.rs - source
 1
+register.rs - source
+    
+    
 1
  2
  3
  4
@@ -82,9 +87,8 @@
 pub async fn join() -> impl Responder {
     HttpResponse::Ok()
         .content_type("text/html; charset=utf-8")
-        .body(&*INDEX)
+        .body(&**INDEX)
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/auth/sudo.rs.html b/src/mcaptcha/pages/auth/sudo.rs.html index 6ddc8e22..de02ac5b 100644 --- a/src/mcaptcha/pages/auth/sudo.rs.html +++ b/src/mcaptcha/pages/auth/sudo.rs.html @@ -1,4 +1,9 @@ -sudo.rs - source
 1
+sudo.rs - source
+    
+    
 1
  2
  3
  4
@@ -89,6 +94,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/errors.rs.html b/src/mcaptcha/pages/errors.rs.html index afebc404..d7b731d8 100644 --- a/src/mcaptcha/pages/errors.rs.html +++ b/src/mcaptcha/pages/errors.rs.html @@ -1,4 +1,9 @@ -errors.rs - source
  1
+errors.rs - source
+    
+    
  1
   2
   3
   4
@@ -174,17 +179,17 @@
     let resp = match path.into_inner() {
         500 => HttpResponse::InternalServerError()
             .content_type("text/html; charset=utf-8")
-            .body(&*INTERNAL_SERVER_ERROR_BODY),
+            .body(&**INTERNAL_SERVER_ERROR_BODY),
 
         _ => HttpResponse::InternalServerError()
             .content_type("text/html; charset=utf-8")
-            .body(&*UNKNOWN_ERROR_BODY),
+            .body(&**UNKNOWN_ERROR_BODY),
     };
 
     resp
 }
 
-pub fn services(cfg: &mut web::ServiceConfig) {
+pub fn services(cfg: &mut web::ServiceConfig) {
     cfg.service(error);
 }
 
@@ -235,6 +240,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/mod.rs.html b/src/mcaptcha/pages/mod.rs.html index 24f2a477..e36b37cc 100644 --- a/src/mcaptcha/pages/mod.rs.html +++ b/src/mcaptcha/pages/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
  1
+mod.rs - source
+    
+    
  1
   2
   3
   4
@@ -108,6 +113,10 @@
 108
 109
 110
+111
+112
+113
+114
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -123,7 +132,7 @@
  *
  * You should have received a copy of the GNU Affero General Public License along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
-
+use actix_auth_middleware::Authentication;
 use actix_web::web::ServiceConfig;
 
 mod auth;
@@ -134,13 +143,17 @@
 
 pub const NAME: &str = "mCaptcha";
 
-pub fn services(cfg: &mut ServiceConfig) {
+pub fn services(cfg: &mut ServiceConfig) {
     auth::services(cfg);
     panel::services(cfg);
     errors::services(cfg);
     cfg.service(sitemap::sitemap);
 }
 
+pub fn get_middleware() -> Authentication<routes::Routes> {
+    Authentication::with_identity(routes::ROUTES)
+}
+
 #[cfg(not(tarpaulin_include))]
 #[cfg(test)]
 mod tests {
@@ -219,6 +232,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/panel/mod.rs.html b/src/mcaptcha/pages/panel/mod.rs.html index 5afb1b0e..f7218f24 100644 --- a/src/mcaptcha/pages/panel/mod.rs.html +++ b/src/mcaptcha/pages/panel/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -92,6 +97,9 @@
 92
 93
 94
+95
+96
+97
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -135,7 +143,10 @@
 
 const PAGE: &str = "Dashboard";
 
-#[my_codegen::get(path = "crate::PAGES.panel.home", wrap = "crate::CheckLogin")]
+#[my_codegen::get(
+    path = "crate::PAGES.panel.home",
+    wrap = "crate::pages::get_middleware()"
+)]
 async fn panel(data: AppData, id: Identity) -> PageResult<impl Responder> {
     let sitekeys = get_list_sitekeys(&data, &id).await?;
     let body = IndexPage::new(sitekeys).render_once().unwrap();
@@ -144,7 +155,7 @@
         .body(body))
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(panel);
     settings::services(cfg);
     sitekey::services(cfg);
@@ -187,6 +198,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/panel/notifications.rs.html b/src/mcaptcha/pages/panel/notifications.rs.html index 0d57c1c3..cd93a598 100644 --- a/src/mcaptcha/pages/panel/notifications.rs.html +++ b/src/mcaptcha/pages/panel/notifications.rs.html @@ -1,4 +1,9 @@ -notifications.rs - source
  1
+notifications.rs - source
+    
+    
  1
   2
   3
   4
@@ -125,6 +130,9 @@
 125
 126
 127
+128
+129
+130
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -193,7 +201,10 @@
 
 const PAGE: &str = "Notifications";
 
-#[my_codegen::get(path = "crate::PAGES.panel.notifications", wrap = "crate::CheckLogin")]
+#[my_codegen::get(
+    path = "crate::PAGES.panel.notifications",
+    wrap = "crate::pages::get_middleware()"
+)]
 pub async fn notifications(data: AppData, id: Identity) -> PageResult<impl Responder> {
     let receiver = id.identity().unwrap();
     // TODO handle error where payload.to doesnt exist
@@ -253,6 +264,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/panel/settings.rs.html b/src/mcaptcha/pages/panel/settings.rs.html index 2a93b2cd..c70e2df5 100644 --- a/src/mcaptcha/pages/panel/settings.rs.html +++ b/src/mcaptcha/pages/panel/settings.rs.html @@ -1,4 +1,9 @@ -settings.rs - source
  1
+settings.rs - source
+    
+    
  1
   2
   3
   4
@@ -116,6 +121,9 @@
 116
 117
 118
+119
+120
+121
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -164,7 +172,7 @@
     }
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(settings);
     cfg.service(update_secret);
     cfg.service(delete_account);
@@ -180,7 +188,10 @@
     username: &'a str,
 }
 
-#[my_codegen::get(path = "crate::PAGES.panel.settings.home", wrap = "crate::CheckLogin")]
+#[my_codegen::get(
+    path = "crate::PAGES.panel.settings.home",
+    wrap = "crate::pages::get_middleware()"
+)]
 async fn settings(data: AppData, id: Identity) -> PageResult<impl Responder> {
     let username = id.identity().unwrap();
 
@@ -211,7 +222,7 @@
 
 #[my_codegen::get(
     path = "crate::PAGES.panel.settings.delete_account",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::pages::get_middleware()"
 )]
 async fn delete_account() -> impl Responder {
     let page = SudoPage::<u8, u8>::new(crate::V1_API_ROUTES.account.delete, None)
@@ -219,12 +230,12 @@
         .unwrap();
     HttpResponse::Ok()
         .content_type("text/html; charset=utf-8")
-        .body(&page)
+        .body(page)
 }
 
 #[my_codegen::get(
     path = "crate::PAGES.panel.settings.update_secret",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::pages::get_middleware()"
 )]
 async fn update_secret() -> impl Responder {
     let page = SudoPage::<u8, u8>::new(crate::V1_API_ROUTES.account.update_secret, None)
@@ -232,9 +243,8 @@
         .unwrap();
     HttpResponse::Ok()
         .content_type("text/html; charset=utf-8")
-        .body(&page)
+        .body(page)
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/panel/sitekey/add.rs.html b/src/mcaptcha/pages/panel/sitekey/add.rs.html index 4648f704..cc3116fc 100644 --- a/src/mcaptcha/pages/panel/sitekey/add.rs.html +++ b/src/mcaptcha/pages/panel/sitekey/add.rs.html @@ -1,4 +1,9 @@ -add.rs - source
 1
+add.rs - source
+    
+    
 1
  2
  3
  4
@@ -139,12 +144,12 @@
 
 #[my_codegen::get(
     path = "crate::PAGES.panel.sitekey.add_advance",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::pages::get_middleware()"
 )]
 pub async fn advance() -> impl Responder {
     HttpResponse::Ok()
         .content_type("text/html; charset=utf-8")
-        .body(&*ADVANCE_INDEX)
+        .body(&**ADVANCE_INDEX)
 }
 
 #[derive(TemplateOnce, Clone)]
@@ -171,14 +176,13 @@
 
 #[my_codegen::get(
     path = "crate::PAGES.panel.sitekey.add_easy",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::pages::get_middleware()"
 )]
 pub async fn easy() -> impl Responder {
     HttpResponse::Ok()
         .content_type("text/html; charset=utf-8")
-        .body(&*EASY_INDEX)
+        .body(&**EASY_INDEX)
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/panel/sitekey/delete.rs.html b/src/mcaptcha/pages/panel/sitekey/delete.rs.html index 122d9f1e..c5eff16d 100644 --- a/src/mcaptcha/pages/panel/sitekey/delete.rs.html +++ b/src/mcaptcha/pages/panel/sitekey/delete.rs.html @@ -1,4 +1,9 @@ -delete.rs - source
 1
+delete.rs - source
+    
+    
 1
  2
  3
  4
@@ -33,6 +38,9 @@
 33
 34
 35
+36
+37
+38
 
/*
 * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
 *
@@ -57,7 +65,10 @@
 use crate::pages::auth::sudo::SudoPage;
 use crate::{PAGES, V1_API_ROUTES};
 
-#[get(path = "PAGES.panel.sitekey.delete", wrap = "crate::CheckLogin")]
+#[get(
+    path = "PAGES.panel.sitekey.delete",
+    wrap = "crate::pages::get_middleware()"
+)]
 pub async fn delete_sitekey(path: web::Path<String>) -> impl Responder {
     let key = path.into_inner();
     let data = vec![("sitekey", key)];
@@ -66,9 +77,8 @@
         .unwrap();
     HttpResponse::Ok()
         .content_type("text/html; charset=utf-8")
-        .body(&page)
+        .body(page)
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/panel/sitekey/edit.rs.html b/src/mcaptcha/pages/panel/sitekey/edit.rs.html index cced24c7..66d1c73c 100644 --- a/src/mcaptcha/pages/panel/sitekey/edit.rs.html +++ b/src/mcaptcha/pages/panel/sitekey/edit.rs.html @@ -1,4 +1,9 @@ -edit.rs - source
  1
+edit.rs - source
+    
+    
  1
   2
   3
   4
@@ -338,7 +343,7 @@
 /// route handler that renders individual views for sitekeys
 #[my_codegen::get(
     path = "crate::PAGES.panel.sitekey.edit_advance",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::pages::get_middleware()"
 )]
 pub async fn advance(
     path: web::Path<String>,
@@ -400,7 +405,7 @@
 /// route handler that renders individual views for sitekeys
 #[my_codegen::get(
     path = "crate::PAGES.panel.sitekey.edit_easy",
-    wrap = "crate::CheckLogin"
+    wrap = "crate::pages::get_middleware()"
 )]
 pub async fn easy(
     path: web::Path<String>,
@@ -553,6 +558,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/panel/sitekey/list.rs.html b/src/mcaptcha/pages/panel/sitekey/list.rs.html index 8a1d2d35..b90e3e80 100644 --- a/src/mcaptcha/pages/panel/sitekey/list.rs.html +++ b/src/mcaptcha/pages/panel/sitekey/list.rs.html @@ -1,4 +1,9 @@ -list.rs - source
  1
+list.rs - source
+    
+    
  1
   2
   3
   4
@@ -115,6 +120,9 @@
 115
 116
 117
+118
+119
+120
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -155,7 +163,10 @@
 }
 
 /// render a list of all sitekeys that a user has
-#[my_codegen::get(path = "crate::PAGES.panel.sitekey.list", wrap = "crate::CheckLogin")]
+#[my_codegen::get(
+    path = "crate::PAGES.panel.sitekey.list",
+    wrap = "crate::pages::get_middleware()"
+)]
 pub async fn list_sitekeys(data: AppData, id: Identity) -> PageResult<impl Responder> {
     let res = get_list_sitekeys(&data, &id).await?;
     let body = IndexPage::new(res).render_once().unwrap();
@@ -233,6 +244,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/panel/sitekey/mod.rs.html b/src/mcaptcha/pages/panel/sitekey/mod.rs.html index 410d69ca..7ff30935 100644 --- a/src/mcaptcha/pages/panel/sitekey/mod.rs.html +++ b/src/mcaptcha/pages/panel/sitekey/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -166,7 +171,7 @@
     }
 }
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(add::advance);
     cfg.service(add::easy);
     cfg.service(list::list_sitekeys);
@@ -197,6 +202,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/panel/sitekey/view.rs.html b/src/mcaptcha/pages/panel/sitekey/view.rs.html index 21e808d9..d3fbb609 100644 --- a/src/mcaptcha/pages/panel/sitekey/view.rs.html +++ b/src/mcaptcha/pages/panel/sitekey/view.rs.html @@ -1,4 +1,9 @@ -view.rs - source
  1
+view.rs - source
+    
+    
  1
   2
   3
   4
@@ -158,6 +163,9 @@
 158
 159
 160
+161
+162
+163
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -226,7 +234,10 @@
 }
 
 /// route handler that renders individual views for sitekeys
-#[my_codegen::get(path = "crate::PAGES.panel.sitekey.view", wrap = "crate::CheckLogin")]
+#[my_codegen::get(
+    path = "crate::PAGES.panel.sitekey.view",
+    wrap = "crate::pages::get_middleware()"
+)]
 pub async fn view_sitekey(
     path: web::Path<String>,
     data: AppData,
@@ -319,6 +330,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/routes.rs.html b/src/mcaptcha/pages/routes.rs.html index 7e300db1..11bfbb70 100644 --- a/src/mcaptcha/pages/routes.rs.html +++ b/src/mcaptcha/pages/routes.rs.html @@ -1,4 +1,9 @@ -routes.rs - source
 1
+routes.rs - source
+    
+    
 1
  2
  3
  4
@@ -67,6 +72,14 @@
 67
 68
 69
+70
+71
+72
+73
+74
+75
+76
+77
 
/*
 * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
 *
@@ -83,10 +96,12 @@
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
+use actix_auth_middleware::GetLoginRoute;
 
 use super::auth::routes::Auth;
 use super::errors::routes::Errors;
 use super::panel::routes::Panel;
+
 pub const ROUTES: Routes = Routes::new();
 
 pub struct Routes {
@@ -127,6 +142,12 @@
     }
 }
 
+impl GetLoginRoute for Routes {
+    fn get_login_route(&self, src: Option<&str>) -> String {
+        self.auth.get_login_route(src)
+    }
+}
+
 #[cfg(test)]
 mod tests {
     use super::*;
@@ -137,6 +158,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/pages/sitemap.rs.html b/src/mcaptcha/pages/sitemap.rs.html index 341b3b0d..a71618bd 100644 --- a/src/mcaptcha/pages/sitemap.rs.html +++ b/src/mcaptcha/pages/sitemap.rs.html @@ -1,4 +1,9 @@ -sitemap.rs - source
 1
+sitemap.rs - source
+    
+    
 1
  2
  3
  4
@@ -104,9 +109,8 @@
 pub async fn sitemap() -> impl Responder {
     HttpResponse::Ok()
         .content_type("application/xml; charset=utf-8")
-        .body(&*INDEX)
+        .body(&**INDEX)
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/routes.rs.html b/src/mcaptcha/routes.rs.html index 89a43d9d..c5551594 100644 --- a/src/mcaptcha/routes.rs.html +++ b/src/mcaptcha/routes.rs.html @@ -1,4 +1,9 @@ -routes.rs - source
 1
+routes.rs - source
+    
+    
 1
  2
  3
  4
@@ -39,7 +44,7 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     crate::api::v1::services(cfg);
     crate::docs::services(cfg);
     crate::widget::services(cfg);
@@ -47,6 +52,5 @@
     crate::static_assets::services(cfg);
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/settings.rs.html b/src/mcaptcha/settings.rs.html index ee874e37..4b2606c7 100644 --- a/src/mcaptcha/settings.rs.html +++ b/src/mcaptcha/settings.rs.html @@ -1,4 +1,9 @@ -settings.rs - source
  1
+settings.rs - source
+    
+    
  1
   2
   3
   4
@@ -236,6 +241,9 @@
 236
 237
 238
+239
+240
+241
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -359,10 +367,6 @@
     pub fn new() -> Result<Self, ConfigError> {
         let mut s = Config::new();
 
-        // setting default values
-        #[cfg(test)]
-        s.set_default("database.pool", 2.to_string())
-            .expect("Couldn't get the number of CPUs");
 
         const CURRENT_DIR: &str = "./config/default.toml";
         const ETC: &str = "/etc/mcaptcha/config.toml";
@@ -393,12 +397,19 @@
             Ok(val) => {
                 let url = Url::parse(&val).expect("couldn't parse Database URL");
                 let database_conf = DatabaseBuilder::extract_database_url(&url);
-                set_from_database_url(&mut s, &database_conf);
+                set_from_database_url(&mut s, &database_conf);
             }
             Err(e) => warn!("couldn't interpret DATABASE_URL: {}", e),
         }
 
-        set_database_url(&mut s);
+        set_database_url(&mut s);
+
+        // setting default values
+        #[cfg(test)]
+        s.set("database.pool", 2.to_string())
+            .expect("Couldn't set database pool count");
+
+
 
         match s.try_into() {
             Ok(val) => Ok(val),
@@ -417,7 +428,7 @@
 }
 
 #[cfg(not(tarpaulin_include))]
-fn set_from_database_url(s: &mut Config, database_conf: &DatabaseBuilder) {
+fn set_from_database_url(s: &mut Config, database_conf: &DatabaseBuilder) {
     s.set("database.username", database_conf.username.clone())
         .expect("Couldn't set database username");
     s.set("database.password", database_conf.password.clone())
@@ -431,7 +442,7 @@
 }
 
 #[cfg(not(tarpaulin_include))]
-fn set_database_url(s: &mut Config) {
+fn set_database_url(s: &mut Config) {
     s.set(
         "database.url",
         format!(
@@ -475,6 +486,5 @@
 //    }
 //}
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/static_assets/filemap.rs.html b/src/mcaptcha/static_assets/filemap.rs.html index 512c6e3d..b4c1f2fc 100644 --- a/src/mcaptcha/static_assets/filemap.rs.html +++ b/src/mcaptcha/static_assets/filemap.rs.html @@ -1,4 +1,9 @@ -filemap.rs - source
 1
+filemap.rs - source
+    
+    
 1
  2
  3
  4
@@ -91,6 +96,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/static_assets/mod.rs.html b/src/mcaptcha/static_assets/mod.rs.html index ecc0b664..4f92ef4d 100644 --- a/src/mcaptcha/static_assets/mod.rs.html +++ b/src/mcaptcha/static_assets/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -44,11 +49,10 @@
 
 pub use filemap::FileMap;
 
-pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
+pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
     cfg.service(static_files::static_files);
     cfg.service(static_files::favicons);
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/static_assets/static_files.rs.html b/src/mcaptcha/static_assets/static_files.rs.html index d170604c..a66ec358 100644 --- a/src/mcaptcha/static_assets/static_files.rs.html +++ b/src/mcaptcha/static_assets/static_files.rs.html @@ -1,4 +1,9 @@ -static_files.rs - source
  1
+static_files.rs - source
+    
+    
  1
   2
   3
   4
@@ -202,6 +207,8 @@
 202
 203
 204
+205
+206
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -220,7 +227,7 @@
  */
 use std::borrow::Cow;
 
-use actix_web::body::AnyBody;
+use actix_web::body::BoxBody;
 use actix_web::{get, http::header, web, HttpResponse, Responder};
 use log::debug;
 use mime_guess::from_path;
@@ -286,9 +293,9 @@
 fn handle_assets(path: &str) -> HttpResponse {
     match Asset::get(path) {
         Some(content) => {
-            let body: AnyBody = match content.data {
-                Cow::Borrowed(bytes) => bytes.into(),
-                Cow::Owned(bytes) => bytes.into(),
+            let body: BoxBody = match content.data {
+                Cow::Borrowed(bytes) => BoxBody::new(bytes),
+                Cow::Owned(bytes) => BoxBody::new(bytes),
             };
 
             HttpResponse::Ok()
@@ -304,6 +311,7 @@
     }
 }
 
+
 #[get("/assets/{_:.*}")]
 pub async fn static_files(path: web::Path<String>) -> impl Responder {
     handle_assets(&path)
@@ -316,9 +324,9 @@
 fn handle_favicons(path: &str) -> HttpResponse {
     match Favicons::get(path) {
         Some(content) => {
-            let body: AnyBody = match content.data {
-                Cow::Borrowed(bytes) => bytes.into(),
-                Cow::Owned(bytes) => bytes.into(),
+            let body: BoxBody = match content.data {
+                Cow::Borrowed(bytes) => BoxBody::new(bytes),
+                Cow::Owned(bytes) => BoxBody::new(bytes),
             };
 
             HttpResponse::Ok()
@@ -334,6 +342,7 @@
     }
 }
 
+
 #[get("/{file}")]
 pub async fn favicons(path: web::Path<String>) -> impl Responder {
     debug!("searching favicons");
@@ -407,6 +416,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/stats/fetch.rs.html b/src/mcaptcha/stats/fetch.rs.html index f73243cf..349c80d0 100644 --- a/src/mcaptcha/stats/fetch.rs.html +++ b/src/mcaptcha/stats/fetch.rs.html @@ -1,4 +1,9 @@ -fetch.rs - source
  1
+fetch.rs - source
+    
+    
  1
   2
   3
   4
@@ -437,6 +442,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/stats/mod.rs.html b/src/mcaptcha/stats/mod.rs.html index 41547fb3..f0feb521 100644 --- a/src/mcaptcha/stats/mod.rs.html +++ b/src/mcaptcha/stats/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -37,6 +42,5 @@
 pub mod fetch;
 pub mod record;
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/stats/record.rs.html b/src/mcaptcha/stats/record.rs.html index 4158771e..63eacc3d 100644 --- a/src/mcaptcha/stats/record.rs.html +++ b/src/mcaptcha/stats/record.rs.html @@ -1,4 +1,9 @@ -record.rs - source
 1
+record.rs - source
+    
+    
 1
  2
  3
  4
@@ -121,6 +126,5 @@
     .await;
 }
 
-
- +
\ No newline at end of file diff --git a/src/mcaptcha/widget/mod.rs.html b/src/mcaptcha/widget/mod.rs.html index 91d8917b..fad5d035 100644 --- a/src/mcaptcha/widget/mod.rs.html +++ b/src/mcaptcha/widget/mod.rs.html @@ -1,4 +1,9 @@ -mod.rs - source
 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -139,11 +144,11 @@
 async fn show_widget() -> PageResult<impl Responder> {
     Ok(HttpResponse::Ok()
         .content_type("text/html; charset=utf-8")
-        .body(&*INDEX_PAGE))
+        .body(&**INDEX_PAGE))
 }
 
 /// widget services
-pub fn services(cfg: &mut web::ServiceConfig) {
+pub fn services(cfg: &mut web::ServiceConfig) {
     cfg.service(show_widget);
 }
 
@@ -161,6 +166,5 @@
     }
 }
 
-
- +
\ No newline at end of file diff --git a/src/tests_migrate/settings.rs.html b/src/tests_migrate/settings.rs.html index beab9fe0..c2c36c1a 100644 --- a/src/tests_migrate/settings.rs.html +++ b/src/tests_migrate/settings.rs.html @@ -1,4 +1,9 @@ -settings.rs - source
  1
+settings.rs - source
+    
+    
  1
   2
   3
   4
@@ -236,6 +241,9 @@
 236
 237
 238
+239
+240
+241
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -359,10 +367,6 @@
     pub fn new() -> Result<Self, ConfigError> {
         let mut s = Config::new();
 
-        // setting default values
-        #[cfg(test)]
-        s.set_default("database.pool", 2.to_string())
-            .expect("Couldn't get the number of CPUs");
 
         const CURRENT_DIR: &str = "./config/default.toml";
         const ETC: &str = "/etc/mcaptcha/config.toml";
@@ -393,12 +397,19 @@
             Ok(val) => {
                 let url = Url::parse(&val).expect("couldn't parse Database URL");
                 let database_conf = DatabaseBuilder::extract_database_url(&url);
-                set_from_database_url(&mut s, &database_conf);
+                set_from_database_url(&mut s, &database_conf);
             }
             Err(e) => warn!("couldn't interpret DATABASE_URL: {}", e),
         }
 
-        set_database_url(&mut s);
+        set_database_url(&mut s);
+
+        // setting default values
+        #[cfg(test)]
+        s.set("database.pool", 2.to_string())
+            .expect("Couldn't set database pool count");
+
+
 
         match s.try_into() {
             Ok(val) => Ok(val),
@@ -417,7 +428,7 @@
 }
 
 #[cfg(not(tarpaulin_include))]
-fn set_from_database_url(s: &mut Config, database_conf: &DatabaseBuilder) {
+fn set_from_database_url(s: &mut Config, database_conf: &DatabaseBuilder) {
     s.set("database.username", database_conf.username.clone())
         .expect("Couldn't set database username");
     s.set("database.password", database_conf.password.clone())
@@ -431,7 +442,7 @@
 }
 
 #[cfg(not(tarpaulin_include))]
-fn set_database_url(s: &mut Config) {
+fn set_database_url(s: &mut Config) {
     s.set(
         "database.url",
         format!(
@@ -475,6 +486,5 @@
 //    }
 //}
 
-
- +
\ No newline at end of file diff --git a/src/tests_migrate/tests-migrate.rs.html b/src/tests_migrate/tests-migrate.rs.html index 42d4ba77..f3623f20 100644 --- a/src/tests_migrate/tests-migrate.rs.html +++ b/src/tests_migrate/tests-migrate.rs.html @@ -1,4 +1,9 @@ -tests-migrate.rs - source
 1
+tests-migrate.rs - source
+    
+    
 1
  2
  3
  4
@@ -83,7 +88,6 @@
 83
 84
 85
-86
 
/*
  * Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -163,7 +167,6 @@
         .source("./static/cache")
         .result("./assets")
         .mime_types(types)
-        .copy(true)
         .follow_links(true)
         .build()
         .unwrap();
@@ -171,6 +174,5 @@
     config.process().unwrap();
 }
 
-
- +
\ No newline at end of file diff --git a/storage.js b/storage.js index 6b16cbd8..c6d070de 100644 --- a/storage.js +++ b/storage.js @@ -1 +1 @@ -var resourcesSuffix="";var darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");var settingsDataset=(function(){var settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}var dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){var current=getCurrentValue('rustdoc-'+settingName);if(current!==null){return current}if(settingsDataset!==null){var def=settingsDataset[settingName.replace(/-/g,'_')];if(def!==undefined){return def}}return null}var localStoredTheme=getSettingValue("theme");var savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){var length=arr.length;var i;if(reversed){for(i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(i=0;i=0){updateLocalStorage("rustdoc-preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchTheme(window.currentTheme,window.mainTheme,getSettingValue("theme")||"light",false)} \ No newline at end of file +var darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");var settingsDataset=(function(){var settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}var dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){var current=getCurrentValue(settingName);if(current!==null){return current}if(settingsDataset!==null){var def=settingsDataset[settingName.replace(/-/g,'_')];if(def!==undefined){return def}}return null}var localStoredTheme=getSettingValue("theme");var savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){var length=arr.length;var i;if(reversed){for(i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(i=0;i=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchToSavedTheme()}window.addEventListener("pageshow",function(ev){if(ev.persisted){setTimeout(switchToSavedTheme,0)}}) \ No newline at end of file diff --git a/tests_migrate/all.html b/tests_migrate/all.html index 6bc7ca5d..ea674817 100644 --- a/tests_migrate/all.html +++ b/tests_migrate/all.html @@ -1,5 +1,7 @@ -List of all items in this crate

List of all items[] - -

Structs

Functions

- +List of all items in this crate + +
\ No newline at end of file diff --git a/tests_migrate/fn.build.html b/tests_migrate/fn.build.html index e48368e8..6e82c54d 100644 --- a/tests_migrate/fn.build.html +++ b/tests_migrate/fn.build.html @@ -1,3 +1,8 @@ -build in tests_migrate - Rust

Function tests_migrate::build[][src]

pub(crate) fn build()
- +build in tests_migrate - Rust + +
pub(crate) fn build()
\ No newline at end of file diff --git a/tests_migrate/fn.cache_bust.html b/tests_migrate/fn.cache_bust.html index e599db9f..bb0743e4 100644 --- a/tests_migrate/fn.cache_bust.html +++ b/tests_migrate/fn.cache_bust.html @@ -1,3 +1,8 @@ -cache_bust in tests_migrate - Rust

Function tests_migrate::cache_bust[][src]

pub(crate) fn cache_bust()
- +cache_bust in tests_migrate - Rust + +
pub(crate) fn cache_bust()
\ No newline at end of file diff --git a/tests_migrate/fn.main.html b/tests_migrate/fn.main.html index a6633089..cab46580 100644 --- a/tests_migrate/fn.main.html +++ b/tests_migrate/fn.main.html @@ -1,3 +1,8 @@ -main in tests_migrate - Rust

Function tests_migrate::main[][src]

pub(crate) fn main()
- +main in tests_migrate - Rust + +
pub(crate) fn main()
\ No newline at end of file diff --git a/tests_migrate/index.html b/tests_migrate/index.html index 38678782..8d70e946 100644 --- a/tests_migrate/index.html +++ b/tests_migrate/index.html @@ -1,6 +1,11 @@ -tests_migrate - Rust

Crate tests_migrate[][src]

Modules

-

Structs

-

Functions

-
- +tests_migrate - Rust + +
\ No newline at end of file diff --git a/tests_migrate/settings/fn.check_url.html b/tests_migrate/settings/fn.check_url.html index 313d609f..761afafc 100644 --- a/tests_migrate/settings/fn.check_url.html +++ b/tests_migrate/settings/fn.check_url.html @@ -1,3 +1,8 @@ -check_url in tests_migrate::settings - Rust

Function tests_migrate::settings::check_url[][src]

fn check_url(s: &Config)
- +check_url in tests_migrate::settings - Rust + +
fn check_url(s: &Config)
\ No newline at end of file diff --git a/tests_migrate/settings/fn.set_database_url.html b/tests_migrate/settings/fn.set_database_url.html index ce519b0a..68e248df 100644 --- a/tests_migrate/settings/fn.set_database_url.html +++ b/tests_migrate/settings/fn.set_database_url.html @@ -1,3 +1,8 @@ -set_database_url in tests_migrate::settings - Rust

Function tests_migrate::settings::set_database_url[][src]

fn set_database_url(s: &mut Config)
- +set_database_url in tests_migrate::settings - Rust + +
fn set_database_url(s: &mut Config)
\ No newline at end of file diff --git a/tests_migrate/settings/fn.set_from_database_url.html b/tests_migrate/settings/fn.set_from_database_url.html index fbe1f902..60bb3431 100644 --- a/tests_migrate/settings/fn.set_from_database_url.html +++ b/tests_migrate/settings/fn.set_from_database_url.html @@ -1,3 +1,8 @@ -set_from_database_url in tests_migrate::settings - Rust

Function tests_migrate::settings::set_from_database_url[][src]

fn set_from_database_url(s: &mut Config, database_conf: &DatabaseBuilder)
- +set_from_database_url in tests_migrate::settings - Rust + +
fn set_from_database_url(s: &mut Config, database_conf: &DatabaseBuilder)
\ No newline at end of file diff --git a/tests_migrate/settings/index.html b/tests_migrate/settings/index.html index 6ef58d64..fdc16cb4 100644 --- a/tests_migrate/settings/index.html +++ b/tests_migrate/settings/index.html @@ -1,5 +1,10 @@ -tests_migrate::settings - Rust

Module tests_migrate::settings[][src]

Structs

-

Functions

-
- +tests_migrate::settings - Rust + +
\ No newline at end of file diff --git a/tests_migrate/settings/struct.Captcha.html b/tests_migrate/settings/struct.Captcha.html index 09d5a8c5..c2841139 100644 --- a/tests_migrate/settings/struct.Captcha.html +++ b/tests_migrate/settings/struct.Captcha.html @@ -1,33 +1,31 @@ -Captcha in tests_migrate::settings - Rust

Struct tests_migrate::settings::Captcha[][src]

pub struct Captcha {
-    pub salt: String,
-    pub gc: u64,
+Captcha in tests_migrate::settings - Rust
+    
+    
pub struct Captcha {
+    pub salt: String,
+    pub gc: u64,
     pub default_difficulty_strategy: DefaultDifficultyStrategy,
-}

Fields

salt: Stringgc: u64default_difficulty_strategy: DefaultDifficultyStrategy

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +}

Fields

salt: Stringgc: u64default_difficulty_strategy: DefaultDifficultyStrategy

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/tests_migrate/settings/struct.Database.html b/tests_migrate/settings/struct.Database.html index c8f91b4e..d3a21710 100644 --- a/tests_migrate/settings/struct.Database.html +++ b/tests_migrate/settings/struct.Database.html @@ -1,32 +1,30 @@ -Database in tests_migrate::settings - Rust

Struct tests_migrate::settings::Database[][src]

pub struct Database {
-    pub url: String,
-    pub pool: u32,
-}

Fields

url: Stringpool: u32

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Database in tests_migrate::settings - Rust + +
pub struct Database {
+    pub url: String,
+    pub pool: u32,
+}

Fields

url: Stringpool: u32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/tests_migrate/settings/struct.DatabaseBuilder.html b/tests_migrate/settings/struct.DatabaseBuilder.html index a8529d69..2b0e136c 100644 --- a/tests_migrate/settings/struct.DatabaseBuilder.html +++ b/tests_migrate/settings/struct.DatabaseBuilder.html @@ -1,35 +1,33 @@ -DatabaseBuilder in tests_migrate::settings - Rust

Struct tests_migrate::settings::DatabaseBuilder[][src]

struct DatabaseBuilder {
-    pub port: u32,
-    pub hostname: String,
-    pub username: String,
-    pub password: String,
-    pub name: String,
-}

Fields

port: u32hostname: Stringusername: Stringpassword: Stringname: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +DatabaseBuilder in tests_migrate::settings - Rust + +
struct DatabaseBuilder {
+    pub port: u32,
+    pub hostname: String,
+    pub username: String,
+    pub password: String,
+    pub name: String,
+}

Fields

port: u32hostname: Stringusername: Stringpassword: Stringname: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/tests_migrate/settings/struct.DefaultDifficultyStrategy.html b/tests_migrate/settings/struct.DefaultDifficultyStrategy.html index 00f07079..1957365c 100644 --- a/tests_migrate/settings/struct.DefaultDifficultyStrategy.html +++ b/tests_migrate/settings/struct.DefaultDifficultyStrategy.html @@ -1,34 +1,32 @@ -DefaultDifficultyStrategy in tests_migrate::settings - Rust

Struct tests_migrate::settings::DefaultDifficultyStrategy[][src]

pub struct DefaultDifficultyStrategy {
-    pub avg_traffic_difficulty: u32,
-    pub broke_my_site_traffic_difficulty: u32,
-    pub peak_sustainable_traffic_difficulty: u32,
-    pub duration: u32,
-}

Fields

avg_traffic_difficulty: u32broke_my_site_traffic_difficulty: u32peak_sustainable_traffic_difficulty: u32duration: u32

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +DefaultDifficultyStrategy in tests_migrate::settings - Rust + +
pub struct DefaultDifficultyStrategy {
+    pub avg_traffic_difficulty: u32,
+    pub broke_my_site_traffic_difficulty: u32,
+    pub peak_sustainable_traffic_difficulty: u32,
+    pub duration: u32,
+}

Fields

avg_traffic_difficulty: u32broke_my_site_traffic_difficulty: u32peak_sustainable_traffic_difficulty: u32duration: u32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/tests_migrate/settings/struct.Redis.html b/tests_migrate/settings/struct.Redis.html index 4708f1cd..d7a39cdf 100644 --- a/tests_migrate/settings/struct.Redis.html +++ b/tests_migrate/settings/struct.Redis.html @@ -1,32 +1,30 @@ -Redis in tests_migrate::settings - Rust

Struct tests_migrate::settings::Redis[][src]

pub struct Redis {
-    pub url: String,
-    pub pool: u32,
-}

Fields

url: Stringpool: u32

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Redis in tests_migrate::settings - Rust + +
pub struct Redis {
+    pub url: String,
+    pub pool: u32,
+}

Fields

url: Stringpool: u32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/tests_migrate/settings/struct.Server.html b/tests_migrate/settings/struct.Server.html index 533cd08b..e30ca277 100644 --- a/tests_migrate/settings/struct.Server.html +++ b/tests_migrate/settings/struct.Server.html @@ -1,36 +1,34 @@ -Server in tests_migrate::settings - Rust

Struct tests_migrate::settings::Server[][src]

pub struct Server {
-    pub port: u32,
-    pub domain: String,
-    pub cookie_secret: String,
-    pub ip: String,
-    pub url_prefix: Option<String>,
-    pub proxy_has_tls: bool,
-}

Fields

port: u32domain: Stringcookie_secret: Stringip: Stringurl_prefix: Option<String>proxy_has_tls: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Server in tests_migrate::settings - Rust + +
pub struct Server {
+    pub port: u32,
+    pub domain: String,
+    pub cookie_secret: String,
+    pub ip: String,
+    pub url_prefix: Option<String>,
+    pub proxy_has_tls: bool,
+}

Fields

port: u32domain: Stringcookie_secret: Stringip: Stringurl_prefix: Option<String>proxy_has_tls: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/tests_migrate/settings/struct.Settings.html b/tests_migrate/settings/struct.Settings.html index eff80c80..e6af6b71 100644 --- a/tests_migrate/settings/struct.Settings.html +++ b/tests_migrate/settings/struct.Settings.html @@ -1,40 +1,38 @@ -Settings in tests_migrate::settings - Rust

Struct tests_migrate::settings::Settings[][src]

pub struct Settings {
-    pub debug: bool,
-    pub commercial: bool,
+Settings in tests_migrate::settings - Rust
+    
+    
pub struct Settings {
+    pub debug: bool,
+    pub commercial: bool,
     pub database: Database,
-    pub redis: Option<Redis>,
+    pub redis: Option<Redis>,
     pub server: Server,
     pub captcha: Captcha,
-    pub source_code: String,
-    pub smtp: Option<Smtp>,
-    pub allow_registration: bool,
-    pub allow_demo: bool,
-}

Fields

debug: boolcommercial: booldatabase: Databaseredis: Option<Redis>server: Servercaptcha: Captchasource_code: Stringsmtp: Option<Smtp>allow_registration: boolallow_demo: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- + pub source_code: String, + pub smtp: Option<Smtp>, + pub allow_registration: bool, + pub allow_demo: bool, +}

Fields

debug: boolcommercial: booldatabase: Databaseredis: Option<Redis>server: Servercaptcha: Captchasource_code: Stringsmtp: Option<Smtp>allow_registration: boolallow_demo: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/tests_migrate/settings/struct.Smtp.html b/tests_migrate/settings/struct.Smtp.html index 30a303a1..55f3139e 100644 --- a/tests_migrate/settings/struct.Smtp.html +++ b/tests_migrate/settings/struct.Smtp.html @@ -1,36 +1,34 @@ -Smtp in tests_migrate::settings - Rust

Struct tests_migrate::settings::Smtp[][src]

pub struct Smtp {
-    pub from: String,
-    pub reply: String,
-    pub url: String,
-    pub username: String,
-    pub password: String,
-    pub port: u16,
-}

Fields

from: Stringreply: Stringurl: Stringusername: Stringpassword: Stringport: u16

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +Smtp in tests_migrate::settings - Rust + +
pub struct Smtp {
+    pub from: String,
+    pub reply: String,
+    pub url: String,
+    pub username: String,
+    pub password: String,
+    pub port: u16,
+}

Fields

from: Stringreply: Stringurl: Stringusername: Stringpassword: Stringport: u16

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/tests_migrate/struct.SETTINGS.html b/tests_migrate/struct.SETTINGS.html index 75d912eb..809cb70f 100644 --- a/tests_migrate/struct.SETTINGS.html +++ b/tests_migrate/struct.SETTINGS.html @@ -1,25 +1,24 @@ -SETTINGS in tests_migrate - Rust

Struct tests_migrate::SETTINGS[][src]

pub struct SETTINGS {
-    __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = Settings>

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- +SETTINGS in tests_migrate - Rust + +
pub struct SETTINGS {
+    pub(crate) __private_field: (),
+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/tests_migrate/struct.Settings.html b/tests_migrate/struct.Settings.html index db9f85e6..0ff41200 100644 --- a/tests_migrate/struct.Settings.html +++ b/tests_migrate/struct.Settings.html @@ -1,40 +1,38 @@ -Settings in tests_migrate - Rust

Struct tests_migrate::Settings[][src]

pub struct Settings {
-    pub debug: bool,
-    pub commercial: bool,
+Settings in tests_migrate - Rust
+    
+    
pub struct Settings {
+    pub debug: bool,
+    pub commercial: bool,
     pub database: Database,
-    pub redis: Option<Redis>,
+    pub redis: Option<Redis>,
     pub server: Server,
     pub captcha: Captcha,
-    pub source_code: String,
-    pub smtp: Option<Smtp>,
-    pub allow_registration: bool,
-    pub allow_demo: bool,
-}

Fields

debug: boolcommercial: booldatabase: Databaseredis: Option<Redis>server: Servercaptcha: Captchasource_code: Stringsmtp: Option<Smtp>allow_registration: boolallow_demo: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- + pub source_code: String, + pub smtp: Option<Smtp>, + pub allow_registration: bool, + pub allow_demo: bool, +}

Fields

debug: boolcommercial: booldatabase: Databaseredis: Option<Redis>server: Servercaptcha: Captchasource_code: Stringsmtp: Option<Smtp>allow_registration: boolallow_demo: bool

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file

t8Hxg7oW5IvKL)RA^X0Ff0`PmKiu!k)~XItm(Y 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 diff --git a/rust-logo.png b/rust-logo.png deleted file mode 100644 index 74b4bd695045ebc52c21af95301adc9311ca881c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5758 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 diff --git a/rust-logo.svg b/rust-logo.svg new file mode 100644 index 00000000..62424d8f --- /dev/null +++ b/rust-logo.svg @@ -0,0 +1,61 @@ + + + diff --git a/rustdoc.css b/rustdoc.css index a1b311e5..07de4cbe 100644 --- a/rustdoc.css +++ b/rustdoc.css @@ -1 +1 @@ - @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Noto Sans KR';src:url("noto-sans-kr-regular.woff2") format("woff2"),url("noto-sans-kr-regular.woff") format("woff");font-display:swap;unicode-range:U+AC00-D7AF,U+3130-318F,U+1100-11FF,U+A960-A97F,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:16px/1.4 "Source Serif 4","Noto Sans KR",serif;margin:0;position:relative;padding:10px 15px 20px 15px;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5em;}h2{font-size:1.4em;}h3{font-size:1.3em;}h1,h2,h3,h4,h5,h6{font-weight:500;margin:20px 0 15px 0;padding-bottom:6px;}h1.fqn{display:flex;border-bottom:1px dashed;margin-top:0;padding-left:1px;}h1.fqn>.in-band>a:hover{text-decoration:underline;}h2,h3,h4{border-bottom:1px solid;}h3.code-header,h4.code-header{font-size:1em;font-weight:600;border:none;padding:0;margin:0;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}.impl,.method.trait-impl,.type.trait-impl,.associatedconstant.trait-impl,.associatedtype.trait-impl{padding-left:15px;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,h5,h6,.sidebar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,div.item-list .out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,details.undocumented>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main>ul.docblock>li>a{font-family:"Fira Sans",Arial,sans-serif;}.content ul.crate a.crate{font-size:16px/1.6;}ol,ul{padding-left:25px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.6em;}p{margin:0 0 .6em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.1em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.type-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{margin-top:50px;max-width:none;overflow:visible;margin-left:0px;}nav.sub{font-size:16px;text-transform:uppercase;}.sidebar{width:200px;position:fixed;left:0;top:0;bottom:0;overflow:auto;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.sidebar .block>ul>li{margin-right:-10px;}.content,nav{max-width:960px;}.hidden{display:none !important;}.logo-container{height:100px;width:100px;position:relative;margin:20px auto;display:block;margin-top:10px;}.logo-container>img{max-width:100px;max-height:100px;height:100%;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;}.sidebar .location{border:1px solid;font-size:17px;margin:30px 10px 20px 10px;text-align:center;word-wrap:break-word;font-weight:inherit;padding:0;}.sidebar .version{font-size:15px;text-align:center;border-bottom:1px solid;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.location a:hover{text-decoration:underline;}.block{padding:0;margin-bottom:14px;}.block h2,.block h3{text-align:center;}.block ul,.block li{margin:0 10px;padding:0;list-style:none;}.block a{display:block;text-overflow:ellipsis;overflow:hidden;line-height:15px;padding:7px 5px;font-size:14px;font-weight:300;transition:border 500ms ease-out;}.sidebar-title{border-top:1px solid;border-bottom:1px solid;text-align:center;font-size:17px;margin-bottom:5px;font-weight:inherit;padding:0;}.sidebar-links{margin-bottom:15px;}.sidebar-links>a{padding-left:10px;width:100%;}.sidebar-menu{display:none;}.content{padding:15px 0;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.example-wrap>pre.rust a:hover{text-decoration:underline;}.rustdoc:not(.source) .example-wrap>pre:not(.line-number){width:100%;overflow-x:auto;}.rustdoc .example-wrap>pre{margin:0;}#search{margin-left:230px;position:relative;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom:1px solid;}.top-doc .docblock h2{font-size:1.3em;}.top-doc .docblock h3{font-size:1.15em;}.top-doc .docblock h4,.top-doc .docblock h5,.top-doc .docblock h6{font-size:1em;}.docblock h5{font-size:1em;}.docblock h6{font-size:0.95em;}.docblock{margin-left:24px;position:relative;}.docblock>*{max-width:100%;overflow-x:auto;}.content .out-of-band{flex-grow:0;text-align:right;font-size:23px;margin:0px;padding:0 0 0 12px;font-weight:normal;}.method>.code-header,.trait-impl>.code-header,.invisible>.code-header{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;}.in-band>code,.in-band>.code-header{display:inline-block;}#main{position:relative;}#main>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.1em;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);overflow-x:auto;display:block;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1em;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8em;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:90%;}.content .item-info{position:relative;margin-left:33px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:25px;position:absolute;top:-6px;left:-19px;}.content .impl-items .method,.content .impl-items>.type,.impl-items>.associatedconstant,.impl-items>.associatedtype,.content .impl-items details>summary>.type,.impl-items details>summary>.associatedconstant,.impl-items details>summary>.associatedtype{margin-left:20px;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main>.item-info{margin-top:0;}nav:not(.sidebar){border-bottom:1px solid;padding-bottom:10px;margin-bottom:10px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}nav.sub,.content{margin-left:230px;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:0;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.anchor::before{content:'§';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.invisible>.srclink,.method>.code-header+.srclink{position:absolute;top:0;right:0;font-size:17px;font-weight:normal;}.block a.current.crate{font-weight:500;}.item-table{display:table;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.2rem;}.search-container{position:relative;}.search-container>div{display:inline-flex;width:calc(100% - 63px);}#crate-search{min-width:115px;margin-top:5px;padding:6px;padding-right:19px;flex:none;border:0;border-right:0;border-radius:4px 0 0 4px;outline:none;cursor:pointer;border-right:1px solid;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;}.search-container>.top-button{position:absolute;right:0;top:10px;}.search-input{-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:none;border-radius:1px;margin-top:5px;padding:10px 16px;font-size:17px;transition:border-color 300ms ease;transition:border-radius 300ms ease-in-out;transition:box-shadow 300ms ease-in-out;width:100%;}#crate-search+.search-input{border-radius:0 1px 1px 0;width:calc(100% - 32px);}.search-input:focus{border-radius:2px;border:0;outline:0;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:18px;}#help span.top{text-align:center;display:block;margin:10px 0;border-bottom:1px solid;padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.item-info .stab{display:table;}.stab{border-width:1px;border-style:solid;padding:3px;margin-bottom:5px;font-size:90%;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.5em;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:80%;line-height:1.2;margin-bottom:0;margin-left:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.impl-items .since,.impl .since,.methods .since{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-size:17px;font-weight:normal;}.rightside{float:right;}.has-srclink{font-size:16px;margin-bottom:12px;justify-content:space-between;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:130%;top:5px;right:5px;z-index:1;}a.test-arrow:hover{text-decoration:none;}.section-header:hover a:before{position:absolute;left:-25px;padding-right:10px;content:'\2002\00a7\2002';}.section-header:hover a{text-decoration:none;}.section-header a{color:inherit;}.code-attribute{font-weight:300;}.since+.srclink{padding-left:10px;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:20px;margin-right:5px;}.sub-variant,.sub-variant>h3{margin-top:0px !important;padding-top:1px;}#main .sub-variant>h3{font-size:15px;margin-left:25px;margin-bottom:5px;}.sub-variant>div{margin-left:20px;margin-bottom:10px;}.sub-variant>div>span{display:block;position:relative;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.docblock>.section-header:first-child{margin-left:15px;margin-top:0;}.docblock>.section-header:first-child:hover>a:before{left:-10px;}:target>code,:target>.code-header{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:16px;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:20px;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:16px;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:19px;font-weight:600;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:20px;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:18px;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:16px;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#all-types{text-align:center;border:1px solid;margin:0 10px;margin-bottom:10px;display:block;border-radius:7px;}#all-types>p{margin:5px 0;}#sidebar-toggle{position:fixed;top:30px;left:300px;z-index:10;padding:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;transition:left .5s;font-size:1.2em;border:1px solid;border-left:0;}#source-sidebar{position:fixed;top:0;bottom:0;left:0;width:300px;z-index:1;overflow:auto;transition:left .5s;border-right:1px solid;}#source-sidebar>.title{font-size:1.5em;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:211px;top:19px;}.theme-picker button{outline:none;}#settings-menu,#help-button{position:absolute;top:10px;}#settings-menu{right:0;outline:none;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:4px;width:27px;height:29px;border:1px solid;border-radius:3px;cursor:pointer;}#help-button{right:30px;font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:17px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;box-shadow:inset 0 -1px 0;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:16px;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:19px;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:17px;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main>ul{padding-left:10px;}#main>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.7em;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary,details.undocumented>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker,details.undocumented>summary::-webkit-details-marker,details.undocumented>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"";cursor:pointer;width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;vertical-align:middle;opacity:.5;}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:16px;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-23px;top:3px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,.undocumented>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-2px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle,details.undocumented{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;content:"";}details.rustdoc-toggle[open] >summary::after,details.rustdoc-toggle[open] >summary.hideme::after{content:"Collapse";}details.undocumented>summary::before{padding-left:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;content:"Show hidden undocumented items";cursor:pointer;font-size:16px;font-weight:300;opacity:.5;}details.undocumented>summary:focus::before,details.undocumented>summary:hover::before{opacity:1;}details.undocumented[open] >summary::before{padding-left:17px;height:max(17px,1.1em);background-repeat:no-repeat background-position:top left;content:"Hide undocumented items";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}}@media (max-width:700px){body{padding-top:0px;}.rustdoc>.sidebar{height:45px;min-height:40px;margin:0;margin-left:-15px;padding:0 15px;position:static;z-index:11;}.sidebar>.location{float:right;margin:0px;margin-top:2px;padding:3px 10px 1px 10px;min-height:39px;background:inherit;text-align:left;font-size:24px;}.sidebar .location:empty{padding:0;}.sidebar .logo-container{width:35px;height:35px;margin-top:5px;margin-bottom:5px;float:left;margin-left:50px;}.sidebar .logo-container>img{max-width:35px;max-height:35px;}.sidebar-menu{position:fixed;z-index:10;font-size:2rem;cursor:pointer;width:45px;left:0;text-align:center;display:block;border-bottom:1px solid;border-right:1px solid;height:45px;}.rustdoc.source>.sidebar>.sidebar-menu{display:none;}.sidebar-elems{position:fixed;z-index:1;top:45px;bottom:0;width:246px;left:-246px;overflow-y:auto;border-right:1px solid;}.sidebar>.block.version{overflow:hidden;border-bottom:none;margin-bottom:0;height:100%;padding-left:12px;}.sidebar>.block.version>div.narrow-helper{float:left;width:1px;height:100%;}.sidebar>.block.version>p{margin:0;min-width:55px;display:flex;align-items:center;height:100%;}nav.sub{width:calc(100% - 32px);float:right;}.content{margin-left:0px;}#main,#search{margin-top:45px;padding:0;}#search{margin-left:0;}.anchor{display:none !important;}.theme-picker{left:10px;top:54px;z-index:1;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}.sidebar.mobile{position:fixed;width:100%;margin-left:0;background-color:rgba(0,0,0,0);height:100%;}.sidebar.mobile>div.version{overflow:hidden;max-height:33px;}.sidebar{width:calc(100% + 30px);}.show-it,.sidebar-elems:focus-within{z-index:2;left:0;}.show-it>.block.items{margin:8px 0;}.show-it>.block.items>ul{margin:0;}.show-it>.block.items>ul>li{text-align:center;margin:2px 0;}.show-it>.block.items>ul>li>a{font-size:21px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main>details.rustdoc-toggle>summary::before,#main>div>details.rustdoc-toggle>summary::before{left:-11px;}#all-types{margin:10px;}#sidebar-toggle{top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;}#source-sidebar{z-index:11;}#main>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:block;}.item-row{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-container>div{width:calc(100% - 32px);}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main,#search{margin-top:100px;}#main>table:not(.table-display) td{word-break:break-word;width:50%;}.search-container>div{display:block;width:calc(100% - 37px);}#crate-search{width:100%;border-radius:4px;border:0;}#crate-search+.search-input{width:calc(100% + 71px);margin-left:-36px;}#theme-picker,#settings-menu{padding:5px;width:31px;height:31px;}#theme-picker{margin-top:-2px;}#settings-menu{top:7px;}.docblock{margin-left:12px;}.docblock code{overflow-wrap:anywhere;}}details.undocumented[open] >summary::before,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{background-image:url(toggle-minus.svg);}details.undocumented>summary::before,details.rustdoc-toggle>summary::before{background-image:url(toggle-plus.svg);} \ No newline at end of file + @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic.ttf.woff2") format("woff2"),url("NanumBarunGothic.ttf.woff") format("woff");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:20px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}h1.fqn{margin:0;padding:0;}.main-heading{display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:6px;margin-bottom:15px;}.main-heading a:hover{text-decoration:underline;}#toggle-all-docs{text-decoration:none;}h2,.top-doc h3,.top-doc h4{border-bottom:1px solid;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;border-bottom-style:none;margin:0;padding:0;margin-top:0.6em;margin-bottom:0.4em;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;position:relative;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,.out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main-content>ul.docblock>li>a{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p{margin:0 0 .75em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{padding:1px 6px;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}.source .width-limiter{max-width:unset;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.docblock.item-decl{margin-left:0;}.item-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{max-width:none;overflow:visible;margin-left:0px;}nav.sub{position:relative;font-size:1rem;text-transform:uppercase;}.sub-container{display:flex;flex-direction:row;flex-wrap:nowrap;}.sub-logo-container{display:none;margin-right:20px;}.source .sub-logo-container{display:block;}.source .sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.sidebar{font-size:0.875rem;width:250px;min-width:200px;overflow-y:scroll;position:sticky;height:100vh;top:0;left:0;}.sidebar-elems,.sidebar>.location{padding-left:24px;}.sidebar .location{overflow-wrap:anywhere;}.rustdoc.source .sidebar{width:50px;min-width:0px;max-width:300px;flex-grow:0;flex-shrink:0;flex-basis:auto;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.source .sidebar>*:not(:first-child){transition:opacity 0.5s;opacity:0;visibility:hidden;}.source .sidebar.expanded{overflow-y:auto;}.source .sidebar.expanded>*{opacity:1;visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.hidden{display:none !important;}.sidebar .logo-container{display:flex;margin-top:10px;margin-bottom:10px;justify-content:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.block{padding:0;}.block ul,.block li{padding:0;margin:0;list-style:none;}.block a,h2.location a{display:block;padding:0.25rem;margin-left:-0.25rem;text-overflow:ellipsis;overflow:hidden;}.sidebar h2{border-bottom:none;font-weight:500;padding:0;margin:0;margin-top:0.7rem;margin-bottom:0.7rem;}.sidebar h3{font-size:1.125rem;font-weight:500;padding:0;margin:0;}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;}.mobile-topbar{display:none;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.example-wrap>pre.rust a:hover{text-decoration:underline;}.rustdoc:not(.source) .example-wrap>pre:not(.line-number){width:100%;overflow-x:auto;}.rustdoc:not(.source) .example-wrap>pre.line-numbers{width:auto;overflow-x:visible;}.rustdoc .example-wrap>pre{margin:0;}#search{position:relative;}.search-loading{text-align:center;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.information){max-width:100%;overflow-x:auto;}.content .out-of-band{flex-grow:0;font-size:1.125rem;font-weight:normal;float:right;}.method>.code-header,.trait-impl>.code-header{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;overflow-wrap:break-word;overflow-wrap:anywhere;}.in-band>code,.in-band>.code-header{display:inline-block;}#main-content{position:relative;}#main-content>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.125rem;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);overflow-x:auto;display:block;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1rem;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.875rem;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:0.875rem;}.content .item-info{position:relative;margin-left:24px;}.sub-variant>div>.item-info{margin-top:initial;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main-content>.item-info{margin-top:0;margin-left:0;}nav.sub{flex-grow:1;margin-bottom:25px;}.source nav.sub{margin-left:32px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.anchor::before{content:'§';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.block a.current.crate{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.25rem;}.search-container{position:relative;display:flex;height:34px;}.search-container>*{height:100%;}.search-results-title{display:inline;}#search-settings{font-size:1.5rem;font-weight:500;margin-bottom:20px;}#crate-search{min-width:115px;margin-top:5px;margin-left:0.25em;padding-left:0.3125em;padding-right:23px;border:0;border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;background-image:url("down-arrow.svg");}.search-container{margin-top:4px;}.search-input{-webkit-appearance:none;-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:1px solid;border-radius:2px;padding:8px;font-size:1rem;transition:border-color 300ms ease;width:100%;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{text-align:center;display:block;margin:10px 0;border-bottom:1px solid;padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.item-info .stab{display:inline-block;}.stab{padding:3px;margin-bottom:5px;font-size:0.875rem;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.25rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:0.875rem;line-height:1.2;margin-bottom:0;margin-left:0.3125em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-weight:normal;font-size:1rem;}.rightside{float:right;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;}.example-wrap:hover .test-arrow{visibility:visible;}a.test-arrow:hover{text-decoration:none;}.code-attribute{font-weight:300;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:1.25rem;}h3.variant{font-weight:600;font-size:1.125rem;margin-bottom:10px;border-bottom:none;}.sub-variant h4{font-size:1rem;font-weight:400;border-bottom:none;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}:target>code,:target>.code-header{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:1rem;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:1.25rem;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:1rem;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:1.1875rem;font-weight:600;display:block;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:1.25rem;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:1.125rem;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:1rem;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#sidebar-toggle{position:sticky;top:0;left:0;cursor:pointer;font-weight:bold;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:center;align-items:center;z-index:10;}#source-sidebar{width:100%;z-index:1;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:-38px;top:4px;}.theme-picker button{outline:none;}#settings-menu,#help-button{margin-left:4px;outline:none;}#theme-picker,#copy-path{height:34px;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:5px;width:33px;border:1px solid;border-radius:2px;cursor:pointer;}#help-button{font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:20px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);overflow-wrap:normal;}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:1rem;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:1.125rem;display:block;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main-content>ul{padding-left:10px;}#main-content>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.625rem;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"";cursor:pointer;width:16px;height:16px;background-repeat:no-repeat;background-position:top left;display:inline-block;vertical-align:middle;opacity:.5;}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:1rem;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.undocumented[open] >summary::before,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{background-image:url("toggle-minus.svg");}details.undocumented>summary::before,details.rustdoc-toggle>summary::before{background-image:url("toggle-plus.svg");}details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{width:16px;height:16px;background-repeat:no-repeat;background-position:top left;display:inline-block;content:"";}details.rustdoc-toggle[open] >summary::after,details.rustdoc-toggle[open] >summary.hideme::after{content:"Collapse";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}.sidebar.expanded+main .width-limiter .sub-logo-container.rust-logo{display:none;}.rustdoc.source .sidebar{transition:width .5s;}.source .sidebar.expanded{width:300px;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{padding-top:0px;display:block;}main{padding-left:15px;padding-top:0px;}.rustdoc,.main-heading{flex-direction:column;}.content .out-of-band{text-align:left;margin-left:initial;padding:initial;}.content .out-of-band .since::before{content:"Since ";}#copy-path{display:none;}.sidebar .sidebar-logo,.sidebar .location{display:none;}.sidebar-elems{margin-top:1em;}.sidebar{position:fixed;top:45px;left:-1000px;margin-left:0;background-color:rgba(0,0,0,0);margin:0;padding:0;z-index:11;height:calc(100vh - 45px);}.source main,.source .sidebar{top:0;padding:0;}.sidebar.shown,.sidebar.expanded,.sidebar:focus-within{left:0;}.rustdoc.source>.sidebar{position:fixed;margin:0;z-index:11;width:0;}.mobile-topbar .location a{padding:0;margin:0;}.mobile-topbar .location{border:none;padding:0;margin:auto 0.5em auto auto;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:24px;}.mobile-topbar .logo-container{max-height:45px;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin-left:20px;margin-top:5px;margin-bottom:5px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.source .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;}.source nav:not(.sidebar).sub{margin-left:32px;}#theme-picker{display:none;width:0;}.content{margin-left:0px;}.source .content{margin-top:10px;}#search{margin-left:0;padding:0;}.anchor{display:none !important;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main-content>details.rustdoc-toggle>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}.sidebar.expanded #sidebar-toggle{font-size:1.5rem;}.sidebar:not(.expanded) #sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;border:1px solid;border-left:0;}#source-sidebar{z-index:11;}#main-content>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:block;}.item-row{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}.source .sidebar.expanded{max-width:100vw;width:100vw;}details.rustdoc-toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,#main-content>details.rustdoc-toggle:not(.top-doc)>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main-content>table:not(.table-display) td{word-break:break-word;width:50%;}#crate-search{border-radius:4px;border:0;}.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}.sub-container{flex-direction:column;}.sub-logo-container{align-self:center;}.source .sub-logo-container>img{height:35px;width:35px;}.sidebar:not(.expanded) #sidebar-toggle{top:10px;}}.method-toggle summary,.implementors-toggle summary,.impl{margin-bottom:0.75em;}.method-toggle[open]{margin-bottom:2em;}.implementors-toggle[open]{margin-bottom:2em;}#trait-implementations-list .method-toggle,#synthetic-implementations-list .method-toggle,#blanket-implementations-list .method-toggle{margin-bottom:1em;}.scraped-example-title{font-family:'Fira Sans';}.scraped-example:not(.expanded) .code-wrapper pre.line-numbers{overflow:hidden;max-height:240px;}.scraped-example:not(.expanded) .code-wrapper .example-wrap pre.rust{overflow-y:hidden;max-height:240px;padding-bottom:0;}.scraped-example .code-wrapper .prev{position:absolute;top:0.25em;right:2.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .next{position:absolute;top:0.25em;right:1.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .expand{position:absolute;top:0.25em;right:0.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper:before{content:" ";width:100%;height:5px;position:absolute;z-index:100;top:0;background:linear-gradient(to bottom,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper:after{content:" ";width:100%;height:5px;position:absolute;z-index:100;bottom:0;background:linear-gradient(to top,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper{overflow:hidden;max-height:240px;}.scraped-example .code-wrapper .line-numbers{margin:0;padding:14px 0;}.scraped-example .code-wrapper .line-numbers span{padding:0 14px;}.scraped-example .code-wrapper .example-wrap{flex:1;overflow-x:auto;overflow-y:hidden;margin-bottom:0;}.scraped-example .code-wrapper .example-wrap pre.rust{overflow-x:inherit;width:inherit;overflow-y:hidden;}.scraped-example .example-wrap .rust span.highlight{background:#fcffd6;}.scraped-example .example-wrap .rust span.highlight.focus{background:#f6fdb0;}.more-examples-toggle{margin-top:10px;}.more-examples-toggle summary{color:#999;font-family:'Fira Sans';}.more-scraped-examples{margin-left:25px;display:flex;flex-direction:row;width:calc(100% - 25px);}.more-scraped-examples-inner{width:calc(100% - 20px);}.toggle-line{align-self:stretch;margin-right:10px;margin-top:5px;padding:0 4px;cursor:pointer;}.toggle-line:hover .toggle-line-inner{background:#aaa;}.toggle-line-inner{min-width:2px;background:#ddd;height:100%;}.more-scraped-examples .scraped-example{margin-bottom:20px;}.more-scraped-examples .scraped-example:last-child{margin-bottom:0;}.example-links a{margin-top:20px;font-family:'Fira Sans';}.example-links ul{margin-bottom:0;} \ No newline at end of file diff --git a/search-index.js b/search-index.js index ffaae701..3007999e 100644 --- a/search-index.js +++ b/search-index.js @@ -1,5 +1,5 @@ var searchIndex = JSON.parse('{\ -"mcaptcha":{"doc":"","t":[6,3,17,17,3,3,3,17,3,3,3,3,17,3,3,3,3,3,3,3,17,17,17,17,3,3,3,3,17,3,3,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,0,12,0,12,12,0,11,11,11,11,11,11,11,11,0,0,0,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,12,5,0,0,12,0,12,0,12,12,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,5,3,3,11,11,11,11,11,11,11,11,0,11,11,0,12,11,11,11,11,11,11,0,0,0,11,11,5,11,11,11,11,11,11,11,11,0,12,11,11,11,11,3,11,11,11,0,5,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,12,3,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,12,12,12,11,11,5,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,3,11,11,12,12,11,12,11,11,11,11,11,12,12,12,12,12,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,12,11,5,11,11,11,11,11,11,11,11,11,11,3,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,5,3,11,11,11,11,11,11,11,11,11,11,12,3,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,0,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,12,11,12,11,11,11,11,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,12,5,12,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,0,0,0,0,5,0,5,0,0,3,3,11,11,11,11,11,11,11,11,3,12,11,11,12,11,11,11,11,11,11,11,12,12,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,11,11,11,3,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,3,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,0,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,3,11,11,12,11,11,11,11,11,11,12,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,3,11,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,5,3,11,11,12,12,12,11,12,11,11,12,11,11,11,12,12,11,3,11,11,11,11,11,11,11,11,11,11,3,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,3,11,11,11,12,11,11,11,11,11,11,3,11,11,11,11,11,11,12,11,12,11,11,11,11,11,11,12,12,11,11,0,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,5,5,3,3,4,3,3,4,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,3,11,11,11,11,11,11,11,11,11,11,12,12,11,11,0,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,12,12,3,11,11,12,11,12,11,11,11,11,11,11,0,0,0,0,5,3,3,11,11,11,11,11,11,11,12,11,11,12,11,11,12,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,3,12,12,12,12,11,11,11,12,12,12,12,12,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,5,3,3,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,12,11,12,11,11,11,11,11,0,0,5,0,0,3,11,11,11,11,11,11,11,11,11,11,3,5,11,11,12,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,11,11,14,12,11,11,11,11,12,11,12,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,3,11,11,17,3,12,12,11,11,12,11,11,12,11,12,12,11,11,11,11,3,13,6,13,4,11,11,11,11,11,12,12,12,14,14,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,17,3,17,17,17,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,17,17,3,11,11,11,11,11,12,11,11,11,11,11,11,11,11,3,17,17,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,12,11,11,12,11,11,11,11,0,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,5,12,11,12,13,13,13,13,13,3,13,13,13,13,4,6,13,13,13,13,4,13,6,3,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,0,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,17,0,0,0,0,5,0,0,0,0,5,0,3,3,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,12,12,11,11,11,11,11,17,3,11,11,11,11,12,11,11,11,11,11,11,11,11,11,12,11,17,3,3,17,3,12,12,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,12,11,11,11,11,0,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,12,11,11,11,11,11,12,11,3,17,11,11,11,11,11,11,11,11,11,11,11,0,3,11,11,11,0,5,0,0,12,11,11,11,11,11,11,11,11,11,3,3,17,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,12,11,3,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,11,11,12,12,12,11,11,11,11,3,17,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,0,12,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,3,11,11,12,11,11,12,11,11,11,11,11,12,11,0,0,0,0,0,5,0,3,3,3,3,17,12,12,3,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,3,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,3,3,3,3,17,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,3,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,17,6,11,11,11,11,11,11,11,11,5,11,11,3,11,11,11,11,12,11,11,11,11,11,11,11,11,11,3,12,12,11,11,12,12,12,11,11,11,11,11,11,11,12,11,11,11,11,12,11,3,3,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,17,3,12,12,11,11,12,12,11,11,12,11,11,12,12,12,12,12,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,12,11,11,11,5,3,3,3,3,3,3,3,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,5,5,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,11,11,0,5,0,3,11,11,12,11,11,11,11,11,11,11,11,3,3,0,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,3,6,3,3,3,3,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,0,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,3,3,17,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,12,11],"n":["AppData","BAR_CHART","CACHE_AGE","COMPILED_DATE","CREDIT_CARD","CSS","CheckLogin","DOCS","DOCS_ICON","Data","FILES","GITHUB","GIT_COMMIT_HASH","HELP_CIRCLE","HOME","JS","KEY","MCAPTCHA_TRANS_ICON","MESSAGE","MOBILE_CSS","PAGES","PKG_DESCRIPTION","PKG_HOMEPAGE","PKG_NAME","SETTINGS","SETTINGS_ICON","SOURCE_FILES_OF_INSTANCE","Settings","V1_API_ROUTES","VERIFICATIN_WIDGET_CSS","VERIFICATIN_WIDGET_JS","VERSION","WIDGET_ROUTES","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","allow_demo","allow_registration","api","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","captcha","captcha","commercial","creds","data","database","date","db","debug","demo","deref","deref","deref","deref","deref","deref","deref","deref","docs","email","errors","from","from","from","from","from","from","from","from","get_identity_service","get_json_err","into","into","into","into","into","into","into","into","mailer","main","middleware","pages","redis","routes","server","settings","smtp","source_code","static_assets","stats","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","widget","v1","account","auth","mcaptcha","meta","notifications","pow","routes","services","AccountCheckPayload","AccountCheckResp","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","delete","deserialize","deserialize","email","exists","fmt","fmt","from","from","into","into","password","routes","secret","serialize","serialize","services","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","username","val","vzip","vzip","borrow","borrow_mut","delete_account","from","into","register","runners","services","try_from","try_into","type_id","vzip","delete_user","Email","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","email","email_exists","fmt","from","from","from","into","into","into","register","register","serialize","services","set_email","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","ChangePasswordReqest","UpdatePassword","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","confirm_new_password","confirm_new_password","deserialize","fmt","from","from","from","from","into","into","into","new_password","new_password","password","register","serialize","services","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_password_runner","update_user_password","vzip","vzip","vzip","Account","borrow","borrow_mut","delete","email_exists","from","get_secret","into","new","try_from","try_into","type_id","update_email","update_password","update_secret","update_username","username_exists","vzip","Secret","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","from","get_secret","into","into","into","register","register","secret","serialize","services","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_user_secret","vzip","vzip","vzip","Username","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","from","into","into","into","register","register","runners","serialize","services","set_username","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","username","username_exists","vzip","vzip","vzip","username_exists","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","into","into","into","login","register","register","register","register","routes","runners","services","signout","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Auth","borrow","borrow_mut","from","into","login","logout","new","register","try_from","try_into","type_id","vzip","Login","Password","Register","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","confirm_password","deserialize","deserialize","deserialize","email","fmt","fmt","fmt","from","from","from","into","into","into","login","login_runner","password","password","password","register_runner","serialize","serialize","serialize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","username","vzip","vzip","vzip","create","delete","easy","get","get_random","routes","services","stats","update","CreateCaptcha","MCaptchaDetails","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","create","description","deserialize","deserialize","duration","fmt","from","from","from","into","into","into","key","levels","name","register","runner","serialize","serialize","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","create","DeleteCaptcha","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","delete","deserialize","fmt","from","from","into","into","key","password","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","TrafficPattern","UpdateTrafficPattern","avg_traffic","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic","calculate","clone","clone","clone_into","clone_into","create","description","deserialize","deserialize","fmt","fmt","from","from","from","from","into","into","into","into","key","pattern","peak_sustainable_traffic","register","register","routes","serialize","serialize","services","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","update","vzip","vzip","vzip","vzip","Easy","borrow","borrow_mut","create","from","into","new","try_from","try_into","type_id","update","vzip","I32Levels","Levels","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deserialize","deserialize","difficulty_factor","fmt","fmt","from","from","from","get_captcha","into","into","into","levels","register","runner","serialize","serialize","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","visitor_threshold","vzip","vzip","vzip","get_captcha","Captcha","borrow","borrow_mut","create","delete","easy","from","get","into","new","stats","try_from","try_into","type_id","update","update_key","vzip","StatsPayload","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","get","into","into","key","register","routes","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Stats","borrow","borrow_mut","from","get","into","new","try_from","try_into","type_id","vzip","UpdateCaptcha","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","description","deserialize","duration","from","from","from","into","into","into","key","levels","register","register","runner","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_captcha","update_key","vzip","vzip","vzip","update_captcha","update_key","BuildDetails","BuildDetailsBuilder","BuildDetailsBuilderError","Health","HealthBuilder","HealthBuilderError","UninitializedField","UninitializedField","ValidationError","ValidationError","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build_details","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","db","db","db","default","default","deserialize","deserialize","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","git_commit_hash","git_commit_hash","git_commit_hash","health","into","into","into","into","into","into","into","into","is_redis","redis","redis","redis","register","register","routes","serialize","serialize","services","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","version","version","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","Meta","borrow","borrow_mut","build_details","from","health","into","new","try_from","try_into","type_id","vzip","add","get","mark_read","routes","services","AddNotification","add_notification","borrow","borrow","borrow_mut","borrow_mut","deserialize","from","from","heading","into","into","message","register","serialize","to","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Notification","NotificationResp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deserialize","from","from","from","from","get_notification","heading","heading","id","id","into","into","into","message","message","name","name","received","received","register","runner","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","get_notification","MarkReadReq","NotificationResp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deserialize","deserialize","from","from","from","heading","id","id","into","into","into","mark_read","message","name","received","register","serialize","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Notifications","add","borrow","borrow_mut","from","get","into","mark_read","new","try_from","try_into","type_id","vzip","get_config","routes","services","verify_pow","verify_token","GetConfigPayload","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","get_config","init_mcaptcha","into","into","key","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","PoW","borrow","borrow_mut","from","get_config","get_config","into","new","rm_scope","scope","try_from","try_into","type_id","validate_captcha_token","validate_captcha_token","verify_pow","verify_pow","vzip","ValidationToken","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","into","into","register","serialize","to_owned","token","try_from","try_from","try_into","try_into","type_id","type_id","verify_pow","vzip","vzip","CaptchaValidateResp","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","into","into","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","valid","validate_captcha_token","vzip","vzip","ROUTES","Routes","account","auth","borrow","borrow_mut","captcha","from","into","meta","new","notifications","pow","try_from","try_into","type_id","vzip","Data","Embedded","Mailer","Redis","SystemGroup","add_site","borrow","borrow","borrow_mut","borrow_mut","captcha","creds","db","enum_system_actor","enum_system_wrapper","from","from","get_creds","get_mailer","get_pow","into","into","mailer","new","new","new_system","remove","rename","try_from","try_from","try_into","try_into","type_id","type_id","validate_verification_tokens","verify_pow","vzip","vzip","0","0","DAY","Date","HOUR","MINUTE","WEEK","borrow","borrow_mut","clone","clone_into","date","fmt","format","from","into","print_date","time","to_owned","try_from","try_into","type_id","vzip","DEMO_PASSWORD","DEMO_USER","DemoUser","abort","borrow","borrow_mut","delete_demo_user","from","handle","into","register_demo_user","run","spawn","try_from","try_into","type_id","vzip","Asset","DOCS","OPEN_API_SPEC","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","dist","from","from","from","from","get","get","handle_embedded_file","index","into","into","into","into","iter","iter","register","register","register","routes","services","spec","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Docs","assets","borrow","borrow_mut","from","home","into","new","spec","try_from","try_into","type_id","vzip","verification","IndexPage","PAGE","borrow","borrow_mut","clone","clone_into","from","into","new","render_once","render_once_to","to_owned","try_from","try_into","type_id","verification","verification_link","vzip","0","AccountNotFound","BlacklistError","CaptchaError","ClosedForRegistration","EmailTaken","ErrorToResponse","InternalServerError","InternalServerError","NotAUrl","NotAnEmail","PageError","PageResult","PasswordTooLong","PasswordTooShort","PasswordsDontMatch","ProfainityError","ServiceError","ServiceError","ServiceResult","SmtpErrorWrapper","TokenNotFound","UnableToSendEmail","UsernameCaseMappedError","UsernameNotFound","UsernameTaken","WrongPassword","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deserialize","eq","eq","eq","error","error_response","error_response","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","into","ne","ne","serialize","source","source","source","status_code","status_code","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","0","0","0","auth","CheckLogin","CheckLoginMiddleware","borrow","borrow","borrow_mut","borrow_mut","call","from","from","into","into","into_service","new_transform","poll_ready","service","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","NAME","auth","errors","panel","routes","services","sitemap","login","register","routes","services","sudo","INDEX","IndexPage","PAGE","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","from","from","from","into","into","into","login","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","INDEX","IndexPage","PAGE","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","from","from","from","into","into","into","join","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Auth","borrow","borrow_mut","from","get_sitemap","into","join","login","new","try_from","try_into","type_id","vzip","PAGE","SudoPage","borrow","borrow_mut","clone","clone_into","data","from","into","new","render_once","render_once_to","to_owned","try_from","try_into","type_id","url","vzip","ERROR_ROUTE","ErrorPage","INTERNAL_SERVER_ERROR_BODY","PAGE","UNKNOWN_ERROR_BODY","__private_field","__private_field","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","deref","error","from","from","from","from","into","into","into","into","message","new","register","render_once","render_once_to","routes","services","title","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Errors","borrow","borrow_mut","from","internal_server_error","into","new","try_from","try_into","type_id","unknown_error","vzip","IndexPage","PAGE","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","into","into","new","notifications","panel","register","render_once","render_once_to","routes","services","settings","sitekey","sitekeys","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","IndexPage","Notification","PAGE","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","from","heading","id","into","into","into","message","n","name","new","notifications","print_date","received","register","render_once","render_once_to","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Panel","borrow","borrow_mut","from","get_sitemap","home","into","new","notifications","settings","sitekey","try_from","try_into","type_id","vzip","IndexPage","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","delete_account","email","from","from","from","from","into","into","into","into","register","register","register","render_once","render_once_to","routes","secret","services","settings","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","update_secret","username","vzip","vzip","vzip","vzip","Settings","borrow","borrow_mut","delete_account","from","get_sitemap","home","into","new","try_from","try_into","type_id","update_secret","vzip","add","delete","edit","list","routes","services","view","ADVANCE_INDEX","AdvanceIndexPage","EASY_INDEX","EasyIndexPage","PAGE","__private_field","__private_field","advance","avg_traffic","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic","clone","clone","clone_into","clone_into","default","default","deref","deref","easy","form_description","form_description","form_duration","form_title","form_title","from","from","from","from","from","from","into","into","into","into","into","into","levels","peak_sustainable_traffic","register","register","render_once","render_once","render_once_to","render_once_to","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","borrow","borrow_mut","delete_sitekey","from","into","register","try_from","try_into","type_id","vzip","AdvanceEditPage","EasyEditPage","Level","McaptchaConfig","PAGE","advance","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","config_id","difficulty_factor","duration","duration","easy","form_title","from","from","from","from","from","from","into","into","into","into","into","into","key","key","levels","name","name","new","new","pattern","register","register","render_once","render_once","render_once_to","render_once_to","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","visitor_threshold","vzip","vzip","vzip","vzip","vzip","vzip","IndexPage","PAGE","SiteKeys","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","get_list_sitekeys","into","into","list_sitekeys","new","register","render_once","render_once_to","sitekeys","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Sitekey","add_advance","add_easy","borrow","borrow_mut","delete","edit_advance","edit_easy","from","get_delete","get_edit_advance","get_edit_easy","get_sitemap","get_view","into","list","new","try_from","try_into","type_id","view","vzip","IndexPage","Level","McaptchaConfig","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_id","difficulty_factor","duration","duration","from","from","from","from","into","into","into","into","key","levels","name","name","new","register","render_once","render_once_to","stats","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","view_sitekey","visitor_threshold","vzip","vzip","vzip","vzip","ROUTES","Routes","about","auth","borrow","borrow_mut","donate","errors","from","get_sitemap","home","into","new","panel","privacy","security","sitemap","thanks","try_from","try_into","type_id","vzip","INDEX","IndexPage","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","domain","from","from","from","into","into","into","register","render_once","render_once_to","sitemap","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","urls","vzip","vzip","vzip","services","Captcha","Database","DatabaseBuilder","DefaultDifficultyStrategy","Redis","Server","Settings","Smtp","allow_demo","allow_registration","avg_traffic_difficulty","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic_difficulty","captcha","check_url","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commercial","cookie_secret","database","debug","default_difficulty_strategy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","domain","duration","extract_database_url","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gc","get_ip","hostname","into","into","into","into","into","into","into","into","ip","name","new","password","password","peak_sustainable_traffic_difficulty","pool","pool","port","port","port","proxy_has_tls","redis","reply","salt","server","set_database_url","set_from_database_url","smtp","source_code","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","url","url","url_prefix","username","username","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","filemap","services","static_files","FileMap","borrow","borrow_mut","files","from","get","into","new","try_from","try_into","type_id","vzip","Asset","Favicons","assets","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","favicons","from","from","from","from","get","get","get","get","handle_assets","handle_favicons","into","into","into","into","iter","iter","iter","iter","register","register","static_files","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","BAR_CHART","CREDIT_CARD","DOCS_ICON","GITHUB","HELP_CIRCLE","HOME","Img","KEY","MCAPTCHA_TRANS_ICON","MESSAGE","SETTINGS_ICON","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","into","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","fetch","record","Stats","StatsPayload","StatsUnixTimestamp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_fetches","config_fetches","confirms","confirms","deserialize","deserialize","fmt","fmt","fmt","from","from","from","from_stats","into","into","into","key","new","runners","serialize","serialize","solves","solves","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unix_timestamp","vzip","vzip","vzip","fetch_config_fetched","fetch_confirm","fetch_solve","record_confirm","record_fetch","record_solve","INDEX_PAGE","IndexPage","PAGE","WIDGET_ROUTES","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","from","from","from","into","into","into","new","register","render_once","render_once_to","routes","services","show_widget","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Widget","borrow","borrow_mut","from","into","new","try_from","try_into","type_id","verification_widget","vzip"],"q":["mcaptcha","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api","mcaptcha::api::v1","","","","","","","","mcaptcha::api::v1::account","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::delete","","","","","","","","","","","","mcaptcha::api::v1::account::delete::runners","mcaptcha::api::v1::account::email","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::password","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::routes","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::secret","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::username","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::username::runners","mcaptcha::api::v1::auth","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::auth::routes","","","","","","","","","","","","","mcaptcha::api::v1::auth::runners","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha","","","","","","","","","mcaptcha::api::v1::mcaptcha::create","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::create::runner","mcaptcha::api::v1::mcaptcha::delete","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::easy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::easy::routes","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::get","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::get::runner","mcaptcha::api::v1::mcaptcha::routes","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::stats","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::stats::routes","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::update","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::update::runner","","mcaptcha::api::v1::meta","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::meta::BuildDetailsBuilderError","","mcaptcha::api::v1::meta::HealthBuilderError","","mcaptcha::api::v1::meta::routes","","","","","","","","","","","","mcaptcha::api::v1::notifications","","","","","mcaptcha::api::v1::notifications::add","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::get","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::get::runner","mcaptcha::api::v1::notifications::mark_read","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::routes","","","","","","","","","","","","","mcaptcha::api::v1::pow","","","","","mcaptcha::api::v1::pow::get_config","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::routes","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::verify_pow","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::verify_token","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::routes","","","","","","","","","","","","","","","","","mcaptcha::data","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::data::SystemGroup","","mcaptcha::date","","","","","","","","","","","","","","","","","","","","","mcaptcha::demo","","","","","","","","","","","","","","","","","mcaptcha::docs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::docs::routes","","","","","","","","","","","","","mcaptcha::email","mcaptcha::email::verification","","","","","","","","","","","","","","","","","","mcaptcha::errors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::errors::PageError","mcaptcha::errors::ServiceError","","mcaptcha::middleware","mcaptcha::middleware::auth","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages","","","","","","","mcaptcha::pages::auth","","","","","mcaptcha::pages::auth::login","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::auth::register","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::auth::routes","","","","","","","","","","","","","mcaptcha::pages::auth::sudo","","","","","","","","","","","","","","","","","","mcaptcha::pages::errors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::errors::routes","","","","","","","","","","","","mcaptcha::pages::panel","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::routes","","","","","","","","","","","","","","","mcaptcha::pages::panel::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::settings::routes","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey","","","","","","","mcaptcha::pages::panel::sitekey::add","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::delete","","","","","","","","","","mcaptcha::pages::panel::sitekey::edit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::list","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::routes","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::view","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::routes","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::sitemap","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::routes","mcaptcha::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::static_assets","","","mcaptcha::static_assets::filemap","","","","","","","","","","","","mcaptcha::static_assets::static_files","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::static_assets::static_files::assets","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::stats","","mcaptcha::stats::fetch","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::stats::fetch::runners","","","mcaptcha::stats::record","","","mcaptcha::widget","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::widget::routes","","","","","","","","","",""],"d":["","","","","","","","","","App data","","","","","","","","","","","","","","","","","points to source files matching build commit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mCaptcha system: Redis cache, etc.","","","credential management configuration","App data: redis cache, database connections, etc.","","","databse pool","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","email client","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","User facing CAPTCHA widget","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","update email","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","update username","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","returns Ok(()) when everything checks out and the user is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","easy is using defaults","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Builder for BuildDetails.","Error type for BuildDetailsBuilder","Health check return datatype","Builder for Health.","Error type for HealthBuilder","Uninitialized field","Uninitialized field","Custom validation error","Custom validation error","","","","","","","","","","","","","","","","","Builds a new BuildDetails.","Builds a new Health.","emmits build details of the bninary","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","checks all components of the system","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that adds a notification message","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that gets all unread notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that marks a notification read","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","PoW Verification module","PoW success token module","","","","","","","","","","","","get PoW configuration for an mcaptcha key","Call this when MCaptcha is not in master.","","","","","","","","","","","","","","","","","","","remove scope for $name route","","","","","","","","","remove scope for $name route","","remove scope for $name route","","","validation token that clients receive as proof for …","","","","","","","","","","","","","","","","","","","","","","","route handler that verifies PoW and issues a solution token","","","","","","","","","","","","","","","","","","","","","","","","","","route hander that validates a PoW solution token","","","","","","","","","","","","","","","","","","","","App data","","Mailer data type AsyncSmtpTransport","","Represents mCaptcha cache and master system. When Redis is …","","","","","","mCaptcha system: Redis cache, etc.","credential management configuration","databse pool","","","","","","","","","","email client","","create new instance of app data","","","","","","","","","","","","","","","","","","","","","","","","","print date","","","","","print relative time from date","","","","","","","Demo password","Demo username","","","","","","","","","register demo user runner","","","","","","","","","","","","","","","","","","","","","","","Get an embedded file and its metadata.","","","","","","","","Iterates over the file paths in the folder.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Email operations: verification, notification, etc","","","","","","","","","","","","","","","","","","","","","when the value passed contains blacklisted words see …","","","email is already taken","","","","","","","","","","","when the value passed contains profainity","","","","","when the a token name is already taken token not found","Unable to send email","when the value passed contains characters not present in …","","when the a username is already taken","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that renders individual views for sitekeys","","","","","","","","","","","","","","","","","","","","","","","","","route handler that renders individual views for sitekeys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","utility function to get a list of all sitekeys that a user …","","","render a list of all sitekeys that a user has","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that renders individual views for sitekeys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get an embedded file and its metadata.","","Get an embedded file and its metadata.","","","","","","","Iterates over the file paths in the folder.","","","Iterates over the file paths in the folder.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","featch PoWConfig confirms","","","","featch PoWConfig fetches","featch PoWConfig confirms","featch PoWConfig solves","record PoWConfig confirms","record PoWConfig fetches","record PoWConfig solves","","","","","","","","","","","","","","","","","","","","","","","","","","widget services","render a client side widget for CAPTCHA verification","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,19,0,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,20,19,19,20,0,19,0,20,19,0,11,12,13,14,15,16,17,18,0,0,0,11,12,13,14,15,16,17,18,0,0,11,12,13,14,15,16,17,18,20,0,0,0,19,0,19,0,19,19,0,0,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,0,0,0,0,0,0,0,0,0,0,0,0,21,22,21,22,21,22,21,22,0,21,22,0,22,21,22,21,22,21,22,0,0,0,21,22,0,21,22,21,22,21,22,21,22,0,21,21,22,23,23,0,23,23,23,0,0,23,23,23,23,0,0,24,25,26,24,25,26,24,24,24,24,0,24,24,25,26,24,25,26,25,26,24,0,0,24,24,25,26,24,25,26,24,25,26,24,25,26,0,0,27,28,29,27,28,29,28,28,27,28,28,28,27,27,28,29,27,28,29,27,28,28,29,28,0,28,27,28,29,27,28,29,27,28,29,0,0,27,28,29,0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,31,32,33,31,32,33,31,31,31,31,31,32,33,0,31,32,33,32,33,31,31,0,31,31,32,33,31,32,33,31,32,33,0,31,32,33,0,34,35,36,34,35,36,35,35,35,35,34,35,36,34,35,36,34,36,0,35,0,0,35,34,35,36,34,35,36,34,35,36,35,0,34,35,36,0,37,38,39,37,38,39,37,38,39,37,38,39,0,0,37,38,39,0,0,0,0,37,38,39,37,38,39,37,38,39,37,38,39,0,40,40,40,40,40,40,40,40,40,40,40,40,0,0,0,41,42,43,41,42,43,41,42,43,41,42,43,41,41,42,43,41,41,42,43,41,42,43,41,42,43,42,0,41,42,43,0,41,42,43,41,42,43,41,42,43,41,42,43,41,42,43,41,41,42,43,0,0,0,0,0,0,0,0,0,0,0,44,45,46,44,45,46,45,45,0,44,44,45,44,45,44,45,46,44,45,46,45,44,45,46,0,44,45,45,44,45,46,44,45,46,44,45,46,44,45,46,0,0,47,48,47,48,47,47,0,47,47,47,48,47,48,47,47,48,47,47,47,48,47,48,47,48,47,48,0,0,49,49,50,51,52,49,50,51,52,49,49,49,51,49,51,0,49,49,51,49,51,49,50,51,52,49,50,51,52,51,51,49,50,52,0,49,51,0,49,51,49,50,51,52,49,50,51,52,49,50,51,52,0,49,50,51,52,0,53,53,53,53,53,53,53,53,53,53,53,0,0,54,55,56,54,55,56,55,56,55,56,55,56,56,55,56,54,55,56,0,54,55,56,55,54,0,55,56,55,56,54,55,56,54,55,56,54,55,56,56,54,55,56,0,0,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,0,58,59,58,59,58,58,58,58,58,59,0,58,59,58,59,0,58,58,58,59,58,59,58,59,58,59,0,60,60,60,60,60,60,60,60,60,60,0,61,62,63,61,62,63,62,62,62,61,62,63,61,62,63,62,62,61,63,0,62,61,62,63,61,62,63,61,62,63,0,0,61,62,63,0,0,0,0,0,0,0,0,64,65,64,65,66,67,64,68,69,70,65,71,66,67,64,68,69,70,65,71,67,70,0,66,67,69,70,66,67,69,70,70,69,70,67,70,66,69,66,64,64,69,65,65,66,67,64,64,64,68,69,70,65,65,65,71,67,66,67,0,66,67,64,68,69,70,65,71,69,70,69,70,68,71,0,66,69,0,66,67,69,70,64,65,66,67,64,68,69,70,65,71,66,67,64,68,69,70,65,71,66,67,64,68,69,70,65,71,67,66,67,66,67,64,68,69,70,65,71,72,73,74,75,0,76,76,76,76,76,76,76,76,76,76,76,0,0,0,0,0,0,0,77,78,77,78,77,77,78,77,77,78,77,78,77,77,77,78,77,78,77,78,77,78,0,0,79,80,81,79,80,81,80,79,80,80,81,0,79,80,79,80,79,80,81,79,80,79,80,79,80,81,0,80,79,80,81,79,80,81,79,80,81,79,80,81,0,0,0,82,83,84,82,83,84,82,83,82,83,84,83,82,83,82,83,84,0,83,83,83,84,82,83,82,83,84,82,83,84,82,83,84,82,83,84,0,85,85,85,85,85,85,85,85,85,85,85,85,0,0,0,0,0,0,86,87,86,87,86,86,86,86,86,87,0,0,86,87,86,87,86,86,86,87,86,87,86,87,86,87,0,88,88,88,88,88,88,88,0,88,88,88,88,88,88,88,88,88,0,89,90,89,90,89,89,89,89,89,90,89,90,90,89,89,89,89,90,89,90,89,90,0,89,90,0,91,92,91,92,91,91,91,91,91,92,91,92,92,91,91,91,92,91,92,91,92,91,0,91,92,0,0,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,0,94,0,94,0,94,94,20,94,20,20,20,20,0,0,94,20,20,20,94,94,20,20,94,20,94,94,94,94,20,94,20,94,20,94,94,94,20,95,96,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,0,0,99,100,101,102,99,100,101,102,0,99,100,101,102,99,99,0,0,99,100,101,102,99,99,100,101,102,0,0,0,99,100,101,102,99,100,101,102,99,100,101,102,99,100,101,102,0,103,103,103,103,103,103,103,103,103,103,103,103,0,0,0,104,104,104,104,104,104,104,104,104,104,104,104,104,0,104,104,105,106,106,106,106,106,0,106,107,106,106,0,0,106,106,106,106,0,107,0,0,106,106,106,106,106,106,105,106,108,107,105,106,108,107,108,105,106,107,108,106,107,105,105,106,106,107,107,105,106,106,106,106,106,106,106,106,106,108,107,107,107,105,106,108,107,106,107,108,105,106,107,106,107,105,106,107,105,106,108,107,105,106,108,107,105,106,108,107,105,106,108,107,109,110,111,0,0,0,112,113,112,113,113,112,113,112,113,113,112,113,113,112,113,112,113,112,113,112,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,115,114,116,115,114,116,115,115,115,114,115,114,116,115,114,116,0,116,115,115,115,115,114,116,115,114,116,115,114,116,115,114,116,0,0,0,117,118,117,119,118,117,119,118,118,118,117,118,117,119,118,117,119,0,119,118,118,118,118,117,119,118,117,119,118,117,119,118,117,119,0,120,120,120,120,120,120,120,120,120,120,120,120,0,0,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,0,0,0,0,0,122,123,124,122,123,125,124,122,123,125,124,124,122,123,0,124,122,123,125,124,122,123,125,124,124,125,124,124,0,0,124,124,124,122,123,125,124,122,123,125,124,122,123,125,124,122,123,125,0,126,126,126,126,126,126,126,126,126,126,126,0,0,127,128,127,128,127,127,127,128,127,128,127,0,0,128,127,127,0,0,0,0,127,127,127,128,127,128,127,128,127,128,0,0,0,129,130,131,129,130,131,129,129,130,131,129,129,129,130,131,129,130,129,130,0,129,129,131,130,130,129,130,131,129,130,131,129,130,131,129,130,131,0,132,132,132,132,132,132,132,132,132,132,132,132,132,132,0,0,133,134,135,136,133,134,135,136,133,133,0,133,133,134,135,136,133,134,135,136,134,135,136,133,133,0,133,0,0,133,133,134,135,136,133,134,135,136,133,134,135,136,0,133,133,134,135,136,0,137,137,137,137,137,137,137,137,137,137,137,137,137,0,0,0,0,0,0,0,0,0,0,0,0,138,139,0,140,138,139,141,142,140,143,138,139,141,142,140,143,140,141,140,141,140,141,140,138,139,0,141,140,141,141,140,138,139,141,142,140,143,138,139,141,142,140,143,141,140,142,143,141,140,141,140,141,140,138,139,141,142,140,143,138,139,141,142,140,143,138,139,141,142,140,143,138,139,141,142,140,143,144,144,0,144,144,144,144,144,144,144,0,0,0,0,0,0,145,146,147,148,149,150,145,146,147,148,149,150,145,146,147,149,145,146,147,149,145,146,145,147,0,149,145,146,147,148,149,150,145,146,147,148,149,150,147,149,147,145,147,147,149,149,148,150,147,149,147,149,145,146,147,149,145,146,147,148,149,150,145,146,147,148,149,150,145,146,147,148,149,150,146,145,146,147,148,149,150,0,0,0,151,152,151,152,151,151,151,152,0,151,152,0,151,152,151,151,151,151,151,152,151,152,151,152,151,152,0,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,0,0,0,0,154,155,156,157,154,155,156,157,154,155,156,154,155,156,154,155,154,156,154,155,156,157,154,155,156,157,156,156,154,156,156,157,156,156,156,154,155,156,154,155,156,157,154,155,156,157,154,155,156,157,0,155,154,155,156,157,0,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,159,160,159,161,160,159,161,160,160,160,159,160,160,159,161,160,159,161,161,160,160,0,160,160,159,161,160,159,161,160,159,161,160,160,159,161,0,0,0,0,0,0,0,0,0,19,19,162,163,164,162,165,166,167,168,19,163,164,162,165,166,167,168,19,162,19,0,163,164,162,165,166,167,168,19,163,164,162,165,166,167,168,19,19,163,19,19,164,163,164,162,165,166,167,168,19,163,162,166,163,164,162,165,166,167,168,19,163,164,162,165,166,167,168,19,165,164,163,166,163,164,162,165,166,167,168,19,163,166,19,165,166,162,167,168,163,165,166,163,19,165,164,19,0,0,19,19,163,164,162,165,166,167,168,19,163,164,162,165,166,167,168,19,163,164,162,165,166,167,168,19,163,164,162,165,166,167,168,19,165,167,168,163,165,166,163,164,162,165,166,167,168,19,0,0,0,0,169,169,169,169,169,169,169,169,169,169,169,0,0,0,170,171,172,173,170,171,172,173,0,170,171,172,173,170,170,172,172,0,0,170,171,172,173,170,170,172,172,171,173,0,170,171,172,173,170,171,172,173,170,171,172,173,170,171,172,173,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,0,0,0,0,0,174,175,176,174,175,176,174,175,176,174,175,176,174,175,174,175,174,176,174,175,176,174,175,176,174,174,175,176,176,175,0,174,176,174,175,174,175,176,174,175,176,174,175,176,174,175,176,174,174,175,176,0,0,0,0,0,0,0,0,0,0,177,178,177,179,178,177,179,178,178,177,178,177,179,178,177,179,178,179,178,178,0,0,0,178,178,177,179,178,177,179,178,177,179,178,177,179,0,180,180,180,180,180,180,180,180,180,180],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,[[],["settings",3]],[[],["filemap",3]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["identityservice",3,["cookieidentitypolicy"]],["cookieidentitypolicy",3]]],[[],["jsonconfig",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",6]],null,null,null,null,null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,[[["serviceconfig",3]]],null,null,[[]],[[]],[[]],[[]],[[],["accountcheckpayload",3]],[[],["accountcheckresp",3]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],[[["appservice",3]]],null,[[["serviceconfig",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[["str",15],["appdata",6]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["email",3]],[[]],[[],["result",4]],null,null,[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],[[],["result",4]],[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["changepasswordreqest",3]],[[]],null,null,[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[["changepasswordreqest",3]]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15],["updatepassword",3],["data",3]]],null,[[]],[[]],[[]],null,[[]],[[]],null,null,[[]],null,[[]],[[],["account",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["secret",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[["serviceconfig",3]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["username",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[["accountcheckpayload",3],["appdata",6]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,null,[[["serviceconfig",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,null,[[],["auth",3]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["register",3]],[[],["login",3]],[[],["password",3]],[[]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["login",3],["appdata",6]]],null,null,null,[[["register",3],["appdata",6]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],null,null,null,null,[[["usize",15]],["string",3]],null,[[["serviceconfig",3]]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["mcaptchadetails",3]],[[]],null,null,[[],["result",4]],[[],["result",4]],null,[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["str",15],["createcaptcha",3],["appdata",6]]],null,[[]],[[]],[[]],[[]],[[],["deletecaptcha",3]],[[]],null,[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["defaultdifficultystrategy",3]],[["serviceerror",4],["result",4,["vec","serviceerror"]],["vec",3,["level"]]]],[[],["trafficpattern",3]],[[],["updatetrafficpattern",3]],[[]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],null,[[]],[[]],null,[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["levels",3]],[[],["i32levels",3]],[[]],[[]],[[],["result",4]],[[],["result",4]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[["str",15],["appdata",6]]],null,[[]],[[]],null,null,null,[[]],null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[]],null,[[]],[[]],[[]],[[]],[[],["statspayload",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],null,[[]],[[]],null,[[["appservice",3]]],null,[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,[[]],[[]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[["str",15],["updatecaptcha",3],["appdata",6]]],[[["str",15],["appdata",6]]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["builddetails",3],["builddetailsbuildererror",4],["result",4,["builddetails","builddetailsbuildererror"]]]],[[],[["healthbuildererror",4],["result",4,["health","healthbuildererror"]],["health",3]]],null,[[],["builddetails",3]],[[],["builddetailsbuilder",3]],[[],["health",3]],[[],["healthbuilder",3]],[[]],[[]],[[]],[[]],[[["bool",15]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["string",3]]],[[["uninitializedfielderror",3]]],[[]],[[]],[[]],[[]],[[["uninitializedfielderror",3]]],[[["string",3]]],[[]],[[]],[[["str",15]]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["option",4]],["bool",15]],[[["option",4,["bool"]],["bool",15]]],null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],null,[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,[[["serviceconfig",3]]],null,null,[[]],[[]],[[]],[[]],[[],["result",4]],[[]],[[]],null,[[]],[[]],null,[[["appservice",3]]],[[],["result",4]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[]],[[["notification",3]]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[]],null,null,null,null,null,null,[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["str",15],["appdata",6]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[]],null,null,null,null,[[["appservice",3]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],null,[[],["notifications",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[["serviceconfig",3]]],null,null,null,[[]],[[]],[[]],[[]],[[],["getconfigpayload",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],null,[[["str",15],["appdata",6]]],[[]],[[]],null,[[["appservice",3]]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,[[]],[[]],[[]],[[],["str",15]],null,[[]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["str",15]],null,[[],["str",15]],null,[[]],null,[[]],[[]],[[]],[[]],[[],["validationtoken",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[],["captchavalidateresp",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],null,null,null,null,[[]],[[]],null,[[]],[[]],null,[[],["routes",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,[[["addsite",3]]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[],["config",3]],[[],[["option",4,["asyncsmtptransport"]],["asyncsmtptransport",3,["tokio1executor"]]]],[[["string",3]]],[[]],[[]],null,[[]],[[]],[[["addr",3],["save",8],["addr",3],["mastertrait",8]],[["system",3],["save",8],["mastertrait",8]]],[[["removecaptcha",3]]],[[["rename",3]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[["verifycaptcharesult",3]]],[[["work",3]]],[[]],[[]],null,null,null,null,null,null,null,[[]],[[]],[[],["date",3]],[[]],[[],["string",3]],[[["formatter",3]],["result",6]],[[["offsetdatetime",3]],["string",3]],[[]],[[]],[[],["string",3]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[["appdata",6]]],[[]],null,[[]],[[["appdata",6]]],[[["appdata",6],["duration",3]]],[[["appdata",6],["duration",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],["httpresponse",3]],null,[[]],[[]],[[]],[[]],[[]],[[],["filenames",4]],[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,[[["serviceconfig",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[]],[[["str",15]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["str",15],["data",3]]],null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["bool",15]],[[["serviceerror",4]],["bool",15]],[[["pageerror",4]],["bool",15]],null,[[],["httpresponse",3]],[[],["httpresponse",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["parseerror",4]],["serviceerror",4]],[[]],[[["credserror",4]],["serviceerror",4]],[[["mailboxerror",4]]],[[["recverror",3]]],[[["smtperror",3]]],[[["error",4]]],[[["captchaerror",4]],["serviceerror",4]],[[["validationerrors",3]],["serviceerror",4]],[[]],[[]],[[["error",4]]],[[["serviceerror",4]]],[[]],[[]],[[]],[[]],[[["serviceerror",4]],["bool",15]],[[["pageerror",4]],["bool",15]],[[],["result",4]],[[],[["error",8],["option",4,["error"]]]],[[],[["error",8],["option",4,["error"]]]],[[],[["error",8],["option",4,["error"]]]],[[],["statuscode",3]],[[],["statuscode",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["servicerequest",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["context",3]],[["poll",4,["result"]],["result",4]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],null,null,[[],["auth",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[]],[[]],[[],["sudopage",3]],[[]],null,[[]],[[]],[[["option",4,["vec"]],["vec",3],["str",15]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["errorpage",3]],[[]],[[],["string",3]],[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["str",15]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[]],[[]],[[]],[[["mcaptchadetails",3],["vec",3,["mcaptchadetails"]]]],null,null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[["serviceconfig",3]]],null,null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["notification",3]]],[[]],[[]],null,null,[[]],[[]],[[]],null,null,null,[[["notification",3],["vec",3,["notification"]]]],null,[[],["string",3]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,[[]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,null,[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],null,[[]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["advanceindexpage",3]],[[],["easyindexpage",3]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["mcaptchaconfig",3]],[[],["level",3]],[[],["advanceeditpage",3]],[[],["easyeditpage",3]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[["mcaptchaconfig",3],["vec",3,["level"]],["string",3],["level",3]]],[[["string",3],["trafficpattern",3]]],null,[[["appservice",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[]],[[["appdata",6],["identity",3]]],[[]],[[]],null,[[["mcaptchadetails",3],["vec",3,["mcaptchadetails"]]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,[[]],[[]],null,null,null,[[]],[[["str",15]],["string",3]],[[["str",15]],["string",3]],[[["str",15]],["string",3]],[[]],[[["str",15]],["string",3]],[[]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["mcaptchaconfig",3]],[[],["level",3]],[[],["indexpage",3]],[[]],[[]],[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,[[["mcaptchaconfig",3],["vec",3,["level"]],["stats",3],["string",3],["level",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,null,null,null,[[]],[[]],null,null,[[]],[[]],null,[[]],[[],["routes",3]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[["serviceconfig",3]]],null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["config",3]]],[[],["server",3]],[[],["captcha",3]],[[],["defaultdifficultystrategy",3]],[[],["smtp",3]],[[],["databasebuilder",3]],[[],["database",3]],[[],["redis",3]],[[],["settings",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,[[["url",3]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],[["result",4,["configerror"]],["configerror",4]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["config",3]]],[[["databasebuilder",3],["config",3]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["serviceconfig",3]]],null,null,[[]],[[]],null,[[]],[[["str",15]],[["option",4,["str"]],["str",15]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],["httpresponse",3]],[[["str",15]],["httpresponse",3]],[[]],[[]],[[]],[[]],[[]],[[],["filenames",4]],[[],["filenames",4]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["statsunixtimestamp",3]],[[],["stats",3]],[[],["statspayload",3]],[[]],[[]],[[]],null,null,null,null,[[],["result",4]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["stats",3]]],[[]],[[]],[[]],null,[[["str",15],["pgpool",6]]],null,[[],["result",4]],[[],["result",4]],null,null,[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],[["vec",3,["i64"]],["i64",15]]],[[]],[[]],[[]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]]],"p":[[3,"KEY"],[3,"GITHUB"],[3,"HOME"],[3,"SETTINGS_ICON"],[3,"CREDIT_CARD"],[3,"HELP_CIRCLE"],[3,"MESSAGE"],[3,"DOCS_ICON"],[3,"MCAPTCHA_TRANS_ICON"],[3,"BAR_CHART"],[3,"SETTINGS"],[3,"FILES"],[3,"JS"],[3,"CSS"],[3,"MOBILE_CSS"],[3,"VERIFICATIN_WIDGET_JS"],[3,"VERIFICATIN_WIDGET_CSS"],[3,"SOURCE_FILES_OF_INSTANCE"],[3,"Settings"],[3,"Data"],[3,"AccountCheckPayload"],[3,"AccountCheckResp"],[3,"delete_account"],[3,"Email"],[3,"email_exists"],[3,"set_email"],[3,"UpdatePassword"],[3,"ChangePasswordReqest"],[3,"update_user_password"],[3,"Account"],[3,"Secret"],[3,"get_secret"],[3,"update_user_secret"],[3,"username_exists"],[3,"Username"],[3,"set_username"],[3,"register"],[3,"login"],[3,"signout"],[3,"Auth"],[3,"Register"],[3,"Login"],[3,"Password"],[3,"CreateCaptcha"],[3,"MCaptchaDetails"],[3,"create"],[3,"DeleteCaptcha"],[3,"delete"],[3,"TrafficPattern"],[3,"create"],[3,"UpdateTrafficPattern"],[3,"update"],[3,"Easy"],[3,"get_captcha"],[3,"Levels"],[3,"I32Levels"],[3,"Captcha"],[3,"StatsPayload"],[3,"get"],[3,"Stats"],[3,"update_key"],[3,"UpdateCaptcha"],[3,"update_captcha"],[4,"BuildDetailsBuilderError"],[4,"HealthBuilderError"],[3,"BuildDetails"],[3,"BuildDetailsBuilder"],[3,"build_details"],[3,"Health"],[3,"HealthBuilder"],[3,"health"],[13,"UninitializedField"],[13,"ValidationError"],[13,"UninitializedField"],[13,"ValidationError"],[3,"Meta"],[3,"AddNotification"],[3,"add_notification"],[3,"Notification"],[3,"NotificationResp"],[3,"get_notification"],[3,"MarkReadReq"],[3,"NotificationResp"],[3,"mark_read"],[3,"Notifications"],[3,"GetConfigPayload"],[3,"get_config"],[3,"PoW"],[3,"ValidationToken"],[3,"verify_pow"],[3,"CaptchaValidateResp"],[3,"validate_captcha_token"],[3,"Routes"],[4,"SystemGroup"],[13,"Embedded"],[13,"Redis"],[3,"Date"],[3,"DemoUser"],[3,"Asset"],[3,"dist"],[3,"spec"],[3,"index"],[3,"Docs"],[3,"IndexPage"],[3,"SmtpErrorWrapper"],[4,"ServiceError"],[4,"PageError"],[3,"ErrorToResponse"],[13,"ServiceError"],[13,"UnableToSendEmail"],[13,"CaptchaError"],[3,"CheckLogin"],[3,"CheckLoginMiddleware"],[3,"INDEX"],[3,"IndexPage"],[3,"login"],[3,"INDEX"],[3,"IndexPage"],[3,"join"],[3,"Auth"],[3,"SudoPage"],[3,"INTERNAL_SERVER_ERROR_BODY"],[3,"UNKNOWN_ERROR_BODY"],[3,"ErrorPage"],[3,"error"],[3,"Errors"],[3,"IndexPage"],[3,"panel"],[3,"Notification"],[3,"IndexPage"],[3,"notifications"],[3,"Panel"],[3,"IndexPage"],[3,"settings"],[3,"delete_account"],[3,"update_secret"],[3,"Settings"],[3,"ADVANCE_INDEX"],[3,"EASY_INDEX"],[3,"EasyIndexPage"],[3,"AdvanceIndexPage"],[3,"advance"],[3,"easy"],[3,"delete_sitekey"],[3,"McaptchaConfig"],[3,"Level"],[3,"AdvanceEditPage"],[3,"advance"],[3,"EasyEditPage"],[3,"easy"],[3,"IndexPage"],[3,"list_sitekeys"],[3,"Sitekey"],[3,"McaptchaConfig"],[3,"Level"],[3,"IndexPage"],[3,"view_sitekey"],[3,"Routes"],[3,"INDEX"],[3,"IndexPage"],[3,"sitemap"],[3,"DefaultDifficultyStrategy"],[3,"Server"],[3,"Captcha"],[3,"Smtp"],[3,"DatabaseBuilder"],[3,"Database"],[3,"Redis"],[3,"FileMap"],[3,"Asset"],[3,"static_files"],[3,"Favicons"],[3,"favicons"],[3,"StatsUnixTimestamp"],[3,"Stats"],[3,"StatsPayload"],[3,"INDEX_PAGE"],[3,"IndexPage"],[3,"show_widget"],[3,"Widget"]]},\ -"tests_migrate":{"doc":"","t":[3,3,12,12,12,11,11,5,5,12,12,12,12,11,11,11,5,12,12,0,12,12,11,11,11,11,3,3,3,3,3,3,3,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,5,5,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,11,11],"n":["SETTINGS","Settings","__private_field","allow_demo","allow_registration","borrow","borrow_mut","build","cache_bust","captcha","commercial","database","debug","deref","from","into","main","redis","server","settings","smtp","source_code","try_from","try_into","type_id","vzip","Captcha","Database","DatabaseBuilder","DefaultDifficultyStrategy","Redis","Server","Settings","Smtp","allow_demo","allow_registration","avg_traffic_difficulty","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic_difficulty","captcha","check_url","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commercial","cookie_secret","database","debug","default_difficulty_strategy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","domain","duration","extract_database_url","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gc","get_ip","hostname","into","into","into","into","into","into","into","into","ip","name","new","password","password","peak_sustainable_traffic_difficulty","pool","pool","port","port","port","proxy_has_tls","redis","reply","salt","server","set_database_url","set_from_database_url","smtp","source_code","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","url","url","url_prefix","username","username","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":["tests_migrate","","","","","","","","","","","","","","","","","","","","","","","","","","tests_migrate::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,1,2,2,1,1,0,0,2,2,2,2,1,1,1,0,2,2,0,2,2,1,1,1,1,0,0,0,0,0,0,0,0,2,2,3,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,3,2,0,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,2,4,2,2,5,4,5,3,6,7,8,9,2,4,3,7,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,6,5,4,7,4,5,3,6,7,8,9,2,4,7,2,6,7,3,8,9,4,6,7,4,2,6,5,2,0,0,2,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,6,8,9,4,6,7,4,5,3,6,7,8,9,2],"f":[null,null,null,null,null,[[]],[[]],[[]],[[]],null,null,null,null,[[],["settings",3]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["config",3]]],[[],["server",3]],[[],["captcha",3]],[[],["defaultdifficultystrategy",3]],[[],["smtp",3]],[[],["databasebuilder",3]],[[],["database",3]],[[],["redis",3]],[[],["settings",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,[[["url",3]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],[["result",4,["configerror"]],["configerror",4]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["config",3]]],[[["config",3],["databasebuilder",3]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]],"p":[[3,"SETTINGS"],[3,"Settings"],[3,"DefaultDifficultyStrategy"],[3,"Server"],[3,"Captcha"],[3,"Smtp"],[3,"DatabaseBuilder"],[3,"Database"],[3,"Redis"]]}\ +"mcaptcha":{"doc":"","t":[6,3,17,17,3,3,17,3,3,3,3,17,3,3,3,3,3,3,3,17,17,17,17,3,3,3,3,17,3,3,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,0,12,0,12,12,0,11,11,11,11,11,11,11,11,0,0,0,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,12,5,0,12,0,12,0,12,12,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,3,0,0,11,11,11,11,5,11,0,0,0,0,12,0,5,11,11,11,11,3,3,11,11,11,11,11,11,11,11,0,11,11,0,12,11,11,11,11,11,11,0,0,0,11,11,5,11,11,11,11,11,11,11,11,0,12,11,11,11,11,3,11,11,11,0,5,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,12,3,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,12,12,12,11,11,5,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,3,11,11,12,12,11,12,11,11,11,11,11,12,12,12,12,12,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,12,11,5,11,11,11,11,11,11,11,11,11,11,3,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,5,3,11,11,11,11,11,11,11,11,11,11,12,3,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,0,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,12,12,11,12,11,11,11,11,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,12,5,12,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,0,0,0,0,5,0,5,0,0,3,3,11,11,11,11,11,11,11,11,3,12,11,11,12,11,11,11,11,11,11,11,12,12,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,11,11,11,3,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,3,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,0,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,3,11,11,12,11,11,11,11,11,11,12,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,3,11,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,5,3,11,11,12,12,12,11,12,11,11,12,11,11,11,12,12,11,3,11,11,11,11,11,11,11,11,11,11,3,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,3,11,11,11,12,11,11,11,11,11,11,3,11,11,11,11,11,11,12,11,12,11,11,11,11,11,11,12,12,11,11,0,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,5,5,3,3,4,3,3,4,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,3,11,11,11,11,11,11,11,11,11,11,12,12,11,11,0,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,12,12,3,11,11,12,11,12,11,11,11,11,11,11,0,0,0,0,5,3,3,11,11,11,11,11,11,11,12,11,11,12,11,11,12,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,3,12,12,12,12,11,11,11,12,12,12,12,12,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,5,3,3,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,12,11,12,11,11,11,11,11,0,0,5,0,0,3,11,11,11,11,11,11,11,11,11,11,3,5,11,11,12,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,11,11,14,12,11,11,11,11,12,11,12,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,3,11,11,17,3,12,12,11,11,12,11,11,11,12,11,12,12,11,11,11,11,3,13,6,13,4,11,11,11,11,11,12,12,12,14,14,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,17,3,17,17,17,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,17,17,3,11,11,11,11,11,12,11,11,11,11,11,11,11,11,3,17,17,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,12,11,11,12,11,11,11,11,0,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,5,12,11,12,13,13,13,13,13,3,13,13,13,13,4,6,13,13,13,13,4,13,6,3,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,17,0,0,5,0,0,5,0,0,0,0,5,0,3,3,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,12,12,11,11,11,11,11,17,3,11,11,11,11,12,11,11,11,11,11,11,11,11,11,12,11,17,3,3,17,3,12,12,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,12,11,11,11,11,0,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,12,11,11,11,11,11,12,11,3,17,11,11,11,11,11,11,11,11,11,11,11,0,3,11,11,11,0,5,0,0,12,11,11,11,11,11,11,11,11,11,3,3,17,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,12,11,3,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,11,11,12,12,12,11,11,11,11,3,17,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,0,12,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,3,11,11,12,11,11,12,11,11,11,11,11,12,11,0,0,0,0,0,5,0,3,3,3,3,17,12,12,3,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,3,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,3,3,3,3,17,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,3,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,17,6,11,11,11,11,11,11,11,11,5,11,11,3,11,11,11,11,12,11,11,11,11,11,11,11,11,11,3,12,12,11,11,12,12,12,11,11,11,11,11,11,11,12,11,11,11,11,12,11,3,3,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,17,3,12,12,11,11,12,12,11,11,11,12,11,11,12,12,12,12,12,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,12,11,11,11,5,3,3,3,3,3,3,3,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,5,5,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,11,11,0,5,0,3,11,11,12,11,11,11,11,11,11,11,11,3,3,0,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,3,6,3,3,3,3,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,0,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,3,3,17,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,12,11],"n":["AppData","BAR_CHART","CACHE_AGE","COMPILED_DATE","CREDIT_CARD","CSS","DOCS","DOCS_ICON","Data","FILES","GITHUB","GIT_COMMIT_HASH","HELP_CIRCLE","HOME","JS","KEY","MCAPTCHA_TRANS_ICON","MESSAGE","MOBILE_CSS","PAGES","PKG_DESCRIPTION","PKG_HOMEPAGE","PKG_NAME","SETTINGS","SETTINGS_ICON","SOURCE_FILES_OF_INSTANCE","Settings","V1_API_ROUTES","VERIFICATIN_WIDGET_CSS","VERIFICATIN_WIDGET_JS","VERSION","WIDGET_ROUTES","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","allow_demo","allow_registration","api","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","captcha","captcha","commercial","creds","data","database","date","db","debug","demo","deref","deref","deref","deref","deref","deref","deref","deref","docs","email","errors","from","from","from","from","from","from","from","from","get_identity_service","get_json_err","into","into","into","into","into","into","into","into","mailer","main","pages","redis","routes","server","settings","smtp","source_code","static_assets","stats","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","widget","v1","RedirectQuery","account","auth","borrow","borrow_mut","deserialize","from","get_middleware","into","mcaptcha","meta","notifications","pow","redirect_to","routes","services","try_from","try_into","type_id","vzip","AccountCheckPayload","AccountCheckResp","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","delete","deserialize","deserialize","email","exists","fmt","fmt","from","from","into","into","password","routes","secret","serialize","serialize","services","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","username","val","vzip","vzip","borrow","borrow_mut","delete_account","from","into","register","runners","services","try_from","try_into","type_id","vzip","delete_user","Email","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","email","email_exists","fmt","from","from","from","into","into","into","register","register","serialize","services","set_email","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","ChangePasswordReqest","UpdatePassword","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","confirm_new_password","confirm_new_password","deserialize","fmt","from","from","from","from","into","into","into","new_password","new_password","password","register","serialize","services","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_password_runner","update_user_password","vzip","vzip","vzip","Account","borrow","borrow_mut","delete","email_exists","from","get_secret","into","new","try_from","try_into","type_id","update_email","update_password","update_secret","update_username","username_exists","vzip","Secret","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","from","get_secret","into","into","into","register","register","secret","serialize","services","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_user_secret","vzip","vzip","vzip","Username","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","from","into","into","into","register","register","runners","serialize","services","set_username","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","username","username_exists","vzip","vzip","vzip","username_exists","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","into","into","into","login","register","register","register","register","routes","runners","services","signout","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Auth","borrow","borrow_mut","from","get_login_route","into","login","logout","new","register","try_from","try_into","type_id","vzip","Login","Password","Register","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","confirm_password","deserialize","deserialize","deserialize","email","fmt","fmt","fmt","from","from","from","into","into","into","login","login_runner","password","password","password","register_runner","serialize","serialize","serialize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","username","vzip","vzip","vzip","create","delete","easy","get","get_random","routes","services","stats","update","CreateCaptcha","MCaptchaDetails","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","create","description","deserialize","deserialize","duration","fmt","from","from","from","into","into","into","key","levels","name","register","runner","serialize","serialize","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","create","DeleteCaptcha","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","delete","deserialize","fmt","from","from","into","into","key","password","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","TrafficPattern","UpdateTrafficPattern","avg_traffic","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic","calculate","clone","clone","clone_into","clone_into","create","description","deserialize","deserialize","fmt","fmt","from","from","from","from","into","into","into","into","key","pattern","peak_sustainable_traffic","register","register","routes","serialize","serialize","services","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","update","vzip","vzip","vzip","vzip","Easy","borrow","borrow_mut","create","from","into","new","try_from","try_into","type_id","update","vzip","I32Levels","Levels","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deserialize","deserialize","difficulty_factor","fmt","fmt","from","from","from","get_captcha","into","into","into","levels","register","runner","serialize","serialize","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","visitor_threshold","vzip","vzip","vzip","get_captcha","Captcha","borrow","borrow_mut","create","delete","easy","from","get","into","new","stats","try_from","try_into","type_id","update","update_key","vzip","StatsPayload","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","get","into","into","key","register","routes","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Stats","borrow","borrow_mut","from","get","into","new","try_from","try_into","type_id","vzip","UpdateCaptcha","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","description","deserialize","duration","from","from","from","into","into","into","key","levels","register","register","runner","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_captcha","update_key","vzip","vzip","vzip","update_captcha","update_key","BuildDetails","BuildDetailsBuilder","BuildDetailsBuilderError","Health","HealthBuilder","HealthBuilderError","UninitializedField","UninitializedField","ValidationError","ValidationError","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build_details","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","create_empty","create_empty","db","db","db","default","default","deserialize","deserialize","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","git_commit_hash","git_commit_hash","git_commit_hash","health","into","into","into","into","into","into","into","into","is_redis","redis","redis","redis","register","register","routes","serialize","serialize","services","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","version","version","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","Meta","borrow","borrow_mut","build_details","from","health","into","new","try_from","try_into","type_id","vzip","add","get","mark_read","routes","services","AddNotification","add_notification","borrow","borrow","borrow_mut","borrow_mut","deserialize","from","from","heading","into","into","message","register","serialize","to","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Notification","NotificationResp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deserialize","from","from","from","from","get_notification","heading","heading","id","id","into","into","into","message","message","name","name","received","received","register","runner","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","get_notification","MarkReadReq","NotificationResp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deserialize","deserialize","from","from","from","heading","id","id","into","into","into","mark_read","message","name","received","register","serialize","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Notifications","add","borrow","borrow_mut","from","get","into","mark_read","new","try_from","try_into","type_id","vzip","get_config","routes","services","verify_pow","verify_token","GetConfigPayload","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","get_config","init_mcaptcha","into","into","key","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","PoW","borrow","borrow_mut","from","get_config","get_config","into","new","rm_scope","scope","try_from","try_into","type_id","validate_captcha_token","validate_captcha_token","verify_pow","verify_pow","vzip","ValidationToken","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","into","into","register","serialize","to_owned","token","try_from","try_from","try_into","try_into","type_id","type_id","verify_pow","vzip","vzip","CaptchaValidateResp","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","into","into","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","valid","validate_captcha_token","vzip","vzip","ROUTES","Routes","account","auth","borrow","borrow_mut","captcha","from","get_login_route","into","meta","new","notifications","pow","try_from","try_into","type_id","vzip","Data","Embedded","Mailer","Redis","SystemGroup","add_site","borrow","borrow","borrow_mut","borrow_mut","captcha","creds","db","enum_system_actor","enum_system_wrapper","from","from","get_creds","get_mailer","get_pow","into","into","mailer","new","new","new_system","remove","rename","try_from","try_from","try_into","try_into","type_id","type_id","validate_verification_tokens","verify_pow","vzip","vzip","0","0","DAY","Date","HOUR","MINUTE","WEEK","borrow","borrow_mut","clone","clone_into","date","fmt","format","from","into","print_date","time","to_owned","try_from","try_into","type_id","vzip","DEMO_PASSWORD","DEMO_USER","DemoUser","abort","borrow","borrow_mut","delete_demo_user","from","handle","into","register_demo_user","run","spawn","try_from","try_into","type_id","vzip","Asset","DOCS","OPEN_API_SPEC","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","dist","from","from","from","from","get","get","handle_embedded_file","index","into","into","into","into","iter","iter","register","register","register","routes","services","spec","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Docs","assets","borrow","borrow_mut","from","home","into","new","spec","try_from","try_into","type_id","vzip","verification","IndexPage","PAGE","borrow","borrow_mut","clone","clone_into","from","into","new","render_once","render_once_to","to_owned","try_from","try_into","type_id","verification","verification_link","vzip","0","AccountNotFound","BlacklistError","CaptchaError","ClosedForRegistration","EmailTaken","ErrorToResponse","InternalServerError","InternalServerError","NotAUrl","NotAnEmail","PageError","PageResult","PasswordTooLong","PasswordTooShort","PasswordsDontMatch","ProfainityError","ServiceError","ServiceError","ServiceResult","SmtpErrorWrapper","TokenNotFound","UnableToSendEmail","UsernameCaseMappedError","UsernameNotFound","UsernameTaken","WrongPassword","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deserialize","eq","eq","eq","error","error_response","error_response","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","into","ne","ne","serialize","source","source","source","status_code","status_code","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","0","0","0","NAME","auth","errors","get_middleware","panel","routes","services","sitemap","login","register","routes","services","sudo","INDEX","IndexPage","PAGE","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","from","from","from","into","into","into","login","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","INDEX","IndexPage","PAGE","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","from","from","from","into","into","into","join","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Auth","borrow","borrow_mut","from","get_login_route","get_sitemap","into","join","login","new","try_from","try_into","type_id","vzip","PAGE","SudoPage","borrow","borrow_mut","clone","clone_into","data","from","into","new","render_once","render_once_to","to_owned","try_from","try_into","type_id","url","vzip","ERROR_ROUTE","ErrorPage","INTERNAL_SERVER_ERROR_BODY","PAGE","UNKNOWN_ERROR_BODY","__private_field","__private_field","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","deref","error","from","from","from","from","into","into","into","into","message","new","register","render_once","render_once_to","routes","services","title","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Errors","borrow","borrow_mut","from","internal_server_error","into","new","try_from","try_into","type_id","unknown_error","vzip","IndexPage","PAGE","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","into","into","new","notifications","panel","register","render_once","render_once_to","routes","services","settings","sitekey","sitekeys","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","IndexPage","Notification","PAGE","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","from","heading","id","into","into","into","message","n","name","new","notifications","print_date","received","register","render_once","render_once_to","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Panel","borrow","borrow_mut","from","get_sitemap","home","into","new","notifications","settings","sitekey","try_from","try_into","type_id","vzip","IndexPage","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","delete_account","email","from","from","from","from","into","into","into","into","register","register","register","render_once","render_once_to","routes","secret","services","settings","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","update_secret","username","vzip","vzip","vzip","vzip","Settings","borrow","borrow_mut","delete_account","from","get_sitemap","home","into","new","try_from","try_into","type_id","update_secret","vzip","add","delete","edit","list","routes","services","view","ADVANCE_INDEX","AdvanceIndexPage","EASY_INDEX","EasyIndexPage","PAGE","__private_field","__private_field","advance","avg_traffic","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic","clone","clone","clone_into","clone_into","default","default","deref","deref","easy","form_description","form_description","form_duration","form_title","form_title","from","from","from","from","from","from","into","into","into","into","into","into","levels","peak_sustainable_traffic","register","register","render_once","render_once","render_once_to","render_once_to","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","borrow","borrow_mut","delete_sitekey","from","into","register","try_from","try_into","type_id","vzip","AdvanceEditPage","EasyEditPage","Level","McaptchaConfig","PAGE","advance","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","config_id","difficulty_factor","duration","duration","easy","form_title","from","from","from","from","from","from","into","into","into","into","into","into","key","key","levels","name","name","new","new","pattern","register","register","render_once","render_once","render_once_to","render_once_to","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","visitor_threshold","vzip","vzip","vzip","vzip","vzip","vzip","IndexPage","PAGE","SiteKeys","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","get_list_sitekeys","into","into","list_sitekeys","new","register","render_once","render_once_to","sitekeys","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Sitekey","add_advance","add_easy","borrow","borrow_mut","delete","edit_advance","edit_easy","from","get_delete","get_edit_advance","get_edit_easy","get_sitemap","get_view","into","list","new","try_from","try_into","type_id","view","vzip","IndexPage","Level","McaptchaConfig","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_id","difficulty_factor","duration","duration","from","from","from","from","into","into","into","into","key","levels","name","name","new","register","render_once","render_once_to","stats","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","view_sitekey","visitor_threshold","vzip","vzip","vzip","vzip","ROUTES","Routes","about","auth","borrow","borrow_mut","donate","errors","from","get_login_route","get_sitemap","home","into","new","panel","privacy","security","sitemap","thanks","try_from","try_into","type_id","vzip","INDEX","IndexPage","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","domain","from","from","from","into","into","into","register","render_once","render_once_to","sitemap","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","urls","vzip","vzip","vzip","services","Captcha","Database","DatabaseBuilder","DefaultDifficultyStrategy","Redis","Server","Settings","Smtp","allow_demo","allow_registration","avg_traffic_difficulty","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic_difficulty","captcha","check_url","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commercial","cookie_secret","database","debug","default_difficulty_strategy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","domain","duration","extract_database_url","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gc","get_ip","hostname","into","into","into","into","into","into","into","into","ip","name","new","password","password","peak_sustainable_traffic_difficulty","pool","pool","port","port","port","proxy_has_tls","redis","reply","salt","server","set_database_url","set_from_database_url","smtp","source_code","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","url","url","url_prefix","username","username","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","filemap","services","static_files","FileMap","borrow","borrow_mut","files","from","get","into","new","try_from","try_into","type_id","vzip","Asset","Favicons","assets","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","favicons","from","from","from","from","get","get","get","get","handle_assets","handle_favicons","into","into","into","into","iter","iter","iter","iter","register","register","static_files","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","BAR_CHART","CREDIT_CARD","DOCS_ICON","GITHUB","HELP_CIRCLE","HOME","Img","KEY","MCAPTCHA_TRANS_ICON","MESSAGE","SETTINGS_ICON","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","into","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","fetch","record","Stats","StatsPayload","StatsUnixTimestamp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_fetches","config_fetches","confirms","confirms","deserialize","deserialize","fmt","fmt","fmt","from","from","from","from_stats","into","into","into","key","new","runners","serialize","serialize","solves","solves","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unix_timestamp","vzip","vzip","vzip","fetch_config_fetched","fetch_confirm","fetch_solve","record_confirm","record_fetch","record_solve","INDEX_PAGE","IndexPage","PAGE","WIDGET_ROUTES","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","from","from","from","into","into","into","new","register","render_once","render_once_to","routes","services","show_widget","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Widget","borrow","borrow_mut","from","into","new","try_from","try_into","type_id","verification_widget","vzip"],"q":["mcaptcha","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api","mcaptcha::api::v1","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::delete","","","","","","","","","","","","mcaptcha::api::v1::account::delete::runners","mcaptcha::api::v1::account::email","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::password","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::routes","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::secret","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::username","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::username::runners","mcaptcha::api::v1::auth","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::auth::routes","","","","","","","","","","","","","","mcaptcha::api::v1::auth::runners","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha","","","","","","","","","mcaptcha::api::v1::mcaptcha::create","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::create::runner","mcaptcha::api::v1::mcaptcha::delete","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::easy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::easy::routes","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::get","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::get::runner","mcaptcha::api::v1::mcaptcha::routes","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::stats","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::stats::routes","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::update","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::update::runner","","mcaptcha::api::v1::meta","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::meta::BuildDetailsBuilderError","","mcaptcha::api::v1::meta::HealthBuilderError","","mcaptcha::api::v1::meta::routes","","","","","","","","","","","","mcaptcha::api::v1::notifications","","","","","mcaptcha::api::v1::notifications::add","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::get","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::get::runner","mcaptcha::api::v1::notifications::mark_read","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::routes","","","","","","","","","","","","","mcaptcha::api::v1::pow","","","","","mcaptcha::api::v1::pow::get_config","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::routes","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::verify_pow","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::verify_token","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::routes","","","","","","","","","","","","","","","","","","mcaptcha::data","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::data::SystemGroup","","mcaptcha::date","","","","","","","","","","","","","","","","","","","","","mcaptcha::demo","","","","","","","","","","","","","","","","","mcaptcha::docs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::docs::routes","","","","","","","","","","","","","mcaptcha::email","mcaptcha::email::verification","","","","","","","","","","","","","","","","","","mcaptcha::errors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::errors::PageError","mcaptcha::errors::ServiceError","","mcaptcha::pages","","","","","","","","mcaptcha::pages::auth","","","","","mcaptcha::pages::auth::login","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::auth::register","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::auth::routes","","","","","","","","","","","","","","mcaptcha::pages::auth::sudo","","","","","","","","","","","","","","","","","","mcaptcha::pages::errors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::errors::routes","","","","","","","","","","","","mcaptcha::pages::panel","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::routes","","","","","","","","","","","","","","","mcaptcha::pages::panel::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::settings::routes","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey","","","","","","","mcaptcha::pages::panel::sitekey::add","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::delete","","","","","","","","","","mcaptcha::pages::panel::sitekey::edit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::list","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::routes","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::view","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::routes","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::sitemap","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::routes","mcaptcha::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::static_assets","","","mcaptcha::static_assets::filemap","","","","","","","","","","","","mcaptcha::static_assets::static_files","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::static_assets::static_files::assets","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::stats","","mcaptcha::stats::fetch","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::stats::fetch::runners","","","mcaptcha::stats::record","","","mcaptcha::widget","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::widget::routes","","","","","","","","","",""],"d":["","","","","","","","","App data","","","","","","","","","","","","","","","","","points to source files matching build commit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mCaptcha system: Redis cache, etc.","","","credential management configuration","App data: redis cache, database connections, etc.","","","databse pool","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","email client","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","User facing CAPTCHA widget","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","update email","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","update username","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","returns Ok(()) when everything checks out and the user is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","easy is using defaults","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","Builder for BuildDetails.","Error type for BuildDetailsBuilder","Health check return datatype","Builder for Health.","Error type for HealthBuilder","Uninitialized field","Uninitialized field","Custom validation error","Custom validation error","","","","","","","","","","","","","","","","","Builds a new BuildDetails.","Builds a new Health.","emmits build details of the bninary","","","","","","","","","Create an empty builder, with all fields set to None or …","Create an empty builder, with all fields set to None or …","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","checks all components of the system","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","route handler that adds a notification message","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","route handler that gets all unread notifications","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","route handler that marks a notification read","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","PoW Verification module","PoW success token module","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","get PoW configuration for an mcaptcha key","Call this when MCaptcha is not in master.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","Returns the argument unchanged.","remove scope for $name route","","Calls U::from(self).","","","","","","","remove scope for $name route","","remove scope for $name route","","","validation token that clients receive as proof for …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","route handler that verifies PoW and issues a solution token","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","route hander that validates a PoW solution token","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","App data","","Mailer data type AsyncSmtpTransport","","Represents mCaptcha cache and master system. When Redis is …","","","","","","mCaptcha system: Redis cache, etc.","credential management configuration","databse pool","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","email client","","create new instance of app data","","","","","","","","","","","","","","","","","","","","","","","","","print date","","","Returns the argument unchanged.","Calls U::from(self).","print relative time from date","","","","","","","Demo password","Demo username","","","","","","Returns the argument unchanged.","","Calls U::from(self).","register demo user runner","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get an embedded file and its metadata.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Iterates over the file paths in the folder.","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","Email operations: verification, notification, etc","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","when the value passed contains blacklisted words see …","","","email is already taken","","","","","","","","","","","when the value passed contains profainity","","","","","when the a token name is already taken token not found","Unable to send email","when the value passed contains characters not present in …","","when the a username is already taken","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","notifications","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","route handler that renders individual views for sitekeys","","","","","","","","","","","","","","","","","","","","","","","","","route handler that renders individual views for sitekeys","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","utility function to get a list of all sitekeys that a user …","Calls U::from(self).","Calls U::from(self).","render a list of all sitekeys that a user has","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","route handler that renders individual views for sitekeys","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Get an embedded file and its metadata.","Get an embedded file and its metadata.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Iterates over the file paths in the folder.","","","Iterates over the file paths in the folder.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","featch PoWConfig confirms","","","","featch PoWConfig fetches","featch PoWConfig confirms","featch PoWConfig solves","record PoWConfig confirms","record PoWConfig fetches","record PoWConfig solves","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","widget services","render a client side widget for CAPTCHA verification","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,19,0,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,20,19,19,20,0,19,0,20,19,0,11,12,13,14,15,16,17,18,0,0,0,11,12,13,14,15,16,17,18,0,0,11,12,13,14,15,16,17,18,20,0,0,19,0,19,0,19,19,0,0,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,0,0,0,0,0,21,21,21,21,0,21,0,0,0,0,21,0,0,21,21,21,21,0,0,22,23,22,23,22,23,22,23,0,22,23,0,23,22,23,22,23,22,23,0,0,0,22,23,0,22,23,22,23,22,23,22,23,0,22,22,23,24,24,0,24,24,24,0,0,24,24,24,24,0,0,25,26,27,25,26,27,25,25,25,25,0,25,25,26,27,25,26,27,26,27,25,0,0,25,25,26,27,25,26,27,25,26,27,25,26,27,0,0,28,29,30,28,29,30,29,29,28,29,29,29,28,28,29,30,28,29,30,28,29,29,30,29,0,29,28,29,30,28,29,30,28,29,30,0,0,28,29,30,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,32,33,34,32,33,34,32,32,32,32,32,33,34,0,32,33,34,33,34,32,32,0,32,32,33,34,32,33,34,32,33,34,0,32,33,34,0,35,36,37,35,36,37,36,36,36,36,35,36,37,35,36,37,35,37,0,36,0,0,36,35,36,37,35,36,37,35,36,37,36,0,35,36,37,0,38,39,40,38,39,40,38,39,40,38,39,40,0,0,38,39,40,0,0,0,0,38,39,40,38,39,40,38,39,40,38,39,40,0,41,41,41,41,41,41,41,41,41,41,41,41,41,0,0,0,42,43,44,42,43,44,42,43,44,42,43,44,42,42,43,44,42,42,43,44,42,43,44,42,43,44,43,0,42,43,44,0,42,43,44,42,43,44,42,43,44,42,43,44,42,43,44,42,42,43,44,0,0,0,0,0,0,0,0,0,0,0,45,46,47,45,46,47,46,46,0,45,45,46,45,46,45,46,47,45,46,47,46,45,46,47,0,45,46,46,45,46,47,45,46,47,45,46,47,45,46,47,0,0,48,49,48,49,48,48,0,48,48,48,49,48,49,48,48,49,48,48,48,49,48,49,48,49,48,49,0,0,50,50,51,52,53,50,51,52,53,50,50,50,52,50,52,0,50,50,52,50,52,50,51,52,53,50,51,52,53,52,52,50,51,53,0,50,52,0,50,52,50,51,52,53,50,51,52,53,50,51,52,53,0,50,51,52,53,0,54,54,54,54,54,54,54,54,54,54,54,0,0,55,56,57,55,56,57,56,57,56,57,56,57,57,56,57,55,56,57,0,55,56,57,56,55,0,56,57,56,57,55,56,57,55,56,57,55,56,57,57,55,56,57,0,0,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,0,59,60,59,60,59,59,59,59,59,60,0,59,60,59,60,0,59,59,59,60,59,60,59,60,59,60,0,61,61,61,61,61,61,61,61,61,61,0,62,63,64,62,63,64,63,63,63,62,63,64,62,63,64,63,63,62,64,0,63,62,63,64,62,63,64,62,63,64,0,0,62,63,64,0,0,0,0,0,0,0,0,65,66,65,66,67,68,65,69,70,71,66,72,67,68,65,69,70,71,66,72,68,71,0,67,68,70,71,67,68,70,71,68,71,71,70,71,68,71,67,70,67,65,65,70,66,66,67,68,65,65,65,69,70,71,66,66,66,72,68,67,68,0,67,68,65,69,70,71,66,72,70,71,70,71,69,72,0,67,70,0,67,68,70,71,65,66,67,68,65,69,70,71,66,72,67,68,65,69,70,71,66,72,67,68,65,69,70,71,66,72,68,67,68,67,68,65,69,70,71,66,72,73,74,75,76,0,77,77,77,77,77,77,77,77,77,77,77,0,0,0,0,0,0,0,78,79,78,79,78,78,79,78,78,79,78,79,78,78,78,79,78,79,78,79,78,79,0,0,80,81,82,80,81,82,81,80,81,81,82,0,80,81,80,81,80,81,82,80,81,80,81,80,81,82,0,81,80,81,82,80,81,82,80,81,82,80,81,82,0,0,0,83,84,85,83,84,85,83,84,83,84,85,84,83,84,83,84,85,0,84,84,84,85,83,84,83,84,85,83,84,85,83,84,85,83,84,85,0,86,86,86,86,86,86,86,86,86,86,86,86,0,0,0,0,0,0,87,88,87,88,87,87,87,87,87,88,0,0,87,88,87,88,87,87,87,88,87,88,87,88,87,88,0,89,89,89,89,89,89,89,0,89,89,89,89,89,89,89,89,89,0,90,91,90,91,90,90,90,90,90,91,90,91,91,90,90,90,90,91,90,91,90,91,0,90,91,0,92,93,92,93,92,92,92,92,92,93,92,93,93,92,92,92,93,92,93,92,93,92,0,92,93,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,95,0,95,0,95,95,20,95,20,20,20,20,0,0,95,20,20,20,95,95,20,20,95,20,95,95,95,95,20,95,20,95,20,95,95,95,20,96,97,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,0,0,99,99,99,99,99,99,99,99,99,99,99,99,99,99,0,0,0,100,101,102,103,100,101,102,103,0,100,101,102,103,100,100,0,0,100,101,102,103,100,100,101,102,103,0,0,0,100,101,102,103,100,101,102,103,100,101,102,103,100,101,102,103,0,104,104,104,104,104,104,104,104,104,104,104,104,0,0,0,105,105,105,105,105,105,105,105,105,105,105,105,105,0,105,105,106,107,107,107,107,107,0,107,108,107,107,0,0,107,107,107,107,0,108,0,0,107,107,107,107,107,107,106,107,109,108,106,107,109,108,109,106,107,108,109,107,108,106,106,107,107,108,108,106,107,107,107,107,107,107,107,107,107,109,108,108,108,106,107,109,108,107,108,109,106,107,108,107,108,106,107,108,106,107,109,108,106,107,109,108,106,107,109,108,106,107,109,108,110,111,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,114,113,115,114,113,115,114,114,114,113,114,113,115,114,113,115,0,115,114,114,114,114,113,115,114,113,115,114,113,115,114,113,115,0,0,0,116,117,116,118,117,116,118,117,117,117,116,117,116,118,117,116,118,0,118,117,117,117,117,116,118,117,116,118,117,116,118,117,116,118,0,119,119,119,119,119,119,119,119,119,119,119,119,119,0,0,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,0,0,0,0,0,121,122,123,121,122,124,123,121,122,124,123,123,121,122,0,123,121,122,124,123,121,122,124,123,123,124,123,123,0,0,123,123,123,121,122,124,123,121,122,124,123,121,122,124,123,121,122,124,0,125,125,125,125,125,125,125,125,125,125,125,0,0,126,127,126,127,126,126,126,127,126,127,126,0,0,127,126,126,0,0,0,0,126,126,126,127,126,127,126,127,126,127,0,0,0,128,129,130,128,129,130,128,128,129,130,128,128,128,129,130,128,129,128,129,0,128,128,130,129,129,128,129,130,128,129,130,128,129,130,128,129,130,0,131,131,131,131,131,131,131,131,131,131,131,131,131,131,0,0,132,133,134,135,132,133,134,135,132,132,0,132,132,133,134,135,132,133,134,135,133,134,135,132,132,0,132,0,0,132,132,133,134,135,132,133,134,135,132,133,134,135,0,132,132,133,134,135,0,136,136,136,136,136,136,136,136,136,136,136,136,136,0,0,0,0,0,0,0,0,0,0,0,0,137,138,0,139,137,138,140,141,139,142,137,138,140,141,139,142,139,140,139,140,139,140,139,137,138,0,140,139,140,140,139,137,138,140,141,139,142,137,138,140,141,139,142,140,139,141,142,140,139,140,139,140,139,137,138,140,141,139,142,137,138,140,141,139,142,137,138,140,141,139,142,137,138,140,141,139,142,143,143,0,143,143,143,143,143,143,143,0,0,0,0,0,0,144,145,146,147,148,149,144,145,146,147,148,149,144,145,146,148,144,145,146,148,144,145,144,146,0,148,144,145,146,147,148,149,144,145,146,147,148,149,146,148,146,144,146,146,148,148,147,149,146,148,146,148,144,145,146,148,144,145,146,147,148,149,144,145,146,147,148,149,144,145,146,147,148,149,145,144,145,146,147,148,149,0,0,0,150,151,150,151,150,150,150,151,0,150,151,0,150,151,150,150,150,150,150,151,150,151,150,151,150,151,0,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,0,0,0,0,153,154,155,156,153,154,155,156,153,154,155,153,154,155,153,154,153,155,153,154,155,156,153,154,155,156,155,155,153,155,155,156,155,155,155,153,154,155,153,154,155,156,153,154,155,156,153,154,155,156,0,154,153,154,155,156,0,0,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,0,0,158,159,158,160,159,158,160,159,159,159,158,159,159,158,160,159,158,160,160,159,159,0,159,159,158,160,159,158,160,159,158,160,159,159,158,160,0,0,0,0,0,0,0,0,0,19,19,161,162,163,161,164,165,166,167,19,162,163,161,164,165,166,167,19,161,19,0,162,163,161,164,165,166,167,19,162,163,161,164,165,166,167,19,19,162,19,19,163,162,163,161,164,165,166,167,19,162,161,165,162,163,161,164,165,166,167,19,162,163,161,164,165,166,167,19,164,163,162,165,162,163,161,164,165,166,167,19,162,165,19,164,165,161,166,167,162,164,165,162,19,164,163,19,0,0,19,19,162,163,161,164,165,166,167,19,162,163,161,164,165,166,167,19,162,163,161,164,165,166,167,19,162,163,161,164,165,166,167,19,164,166,167,162,164,165,162,163,161,164,165,166,167,19,0,0,0,0,168,168,168,168,168,168,168,168,168,168,168,0,0,0,169,170,171,172,169,170,171,172,0,169,170,171,172,169,169,171,171,0,0,169,170,171,172,169,169,171,171,170,172,0,169,170,171,172,169,170,171,172,169,170,171,172,169,170,171,172,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,0,0,0,0,0,173,174,175,173,174,175,173,174,175,173,174,175,173,174,173,174,173,175,173,174,175,173,174,175,173,173,174,175,175,174,0,173,175,173,174,173,174,175,173,174,175,173,174,175,173,174,175,173,173,174,175,0,0,0,0,0,0,0,0,0,0,176,177,176,178,177,176,178,177,177,176,177,176,178,177,176,178,177,178,177,177,0,0,0,177,177,176,178,177,176,178,177,176,178,177,176,178,0,179,179,179,179,179,179,179,179,179,179],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,null,null,null,null,null,null,null,null,[[["",0]],["settings",3]],[[["",0]],["filemap",3]],[[["",0]],["str",0]],[[["",0]],["str",0]],[[["",0]],["str",0]],[[["",0]],["str",0]],[[["",0]],["str",0]],[[["",0]],["string",3]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["identityservice",3,[["cookieidentitypolicy",3]]]],[[],["jsonconfig",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",6]],null,null,null,null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[],["result",4]],[[]],[[],["authentication",3,[["routes",3]]]],[[]],null,null,null,null,null,null,[[["serviceconfig",3]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["accountcheckpayload",3]],[[["",0]],["accountcheckresp",3]],[[["",0],["",0]]],[[["",0],["",0]]],null,[[],["result",4]],[[],["result",4]],null,null,[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],null,null,null,[[["",0]],["result",4]],[[["",0]],["result",4]],[[["serviceconfig",3]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[]],[[]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[]],[[]],[[["appservice",3]]],null,[[["serviceconfig",3]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],[[["str",0],["appdata",6]]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["email",3]],[[["",0],["",0]]],[[],["result",4]],null,null,[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],[[["",0]],["result",4]],[[["serviceconfig",3]]],null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["changepasswordreqest",3]],[[["",0],["",0]]],null,null,[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[["changepasswordreqest",3]]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],[[["",0]],["result",4]],[[["serviceconfig",3]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["str",0],["updatepassword",3],["data",3]]],null,[[]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[]],null,[[]],[[],["account",3]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,null,null,null,null,[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["secret",3]],[[["",0],["",0]]],[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[["",0]],["result",4]],[[["serviceconfig",3]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["username",3]],[[["",0],["",0]]],[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[["",0]],["result",4]],[[["serviceconfig",3]]],null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[]],[[]],[[]],[[["accountcheckpayload",3],["appdata",6]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,null,[[["serviceconfig",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["",0],["option",4,[["str",0]]]],["string",3]],[[]],null,null,[[],["auth",3]],null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["register",3]],[[["",0]],["login",3]],[[["",0]],["password",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["login",3],["appdata",6]]],null,null,null,[[["register",3],["appdata",6]]],[[["",0]],["result",4]],[[["",0]],["result",4]],[[["",0]],["result",4]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],[[]],null,null,null,null,[[["usize",0]],["string",3]],null,[[["serviceconfig",3]]],null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["mcaptchadetails",3]],[[["",0],["",0]]],null,null,[[],["result",4]],[[],["result",4]],null,[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],null,[[["",0]],["result",4]],[[["",0]],["result",4]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[["createcaptcha",3],["appdata",6],["str",0]]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["deletecaptcha",3]],[[["",0],["",0]]],null,[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["",0]],["result",4]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0],["defaultdifficultystrategy",3]],["result",4,[["vec",3,[["level",3]]],["serviceerror",4]]]],[[["",0]],["trafficpattern",3]],[[["",0]],["updatetrafficpattern",3]],[[["",0],["",0]]],[[["",0],["",0]]],null,null,[[],["result",4]],[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[["",0]],["result",4]],[[["",0]],["result",4]],[[["serviceconfig",3]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],null,[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,[[]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["levels",3]],[[["",0]],["i32levels",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[],["result",4]],[[],["result",4]],null,[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[["appservice",3]]],null,[[["",0]],["result",4]],[[["",0]],["result",4]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],[[]],[[["str",0],["str",0],["appdata",6]]],null,[[["",0]],["",0]],[[["",0]],["",0]],null,null,null,[[]],null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,null,[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["statspayload",3]],[[["",0],["",0]]],[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],null,[[]],[[]],null,[[["appservice",3]]],null,[[["",0]],["result",4]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[],["result",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[["",0]],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[]],[[]],[[]],[[["updatecaptcha",3],["appdata",6],["str",0]]],[[["str",0],["str",0],["str",0],["appdata",6]]],null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["result",4,[["builddetails",3],["builddetailsbuildererror",4]]]],[[["",0]],["result",4,[["health",3],["healthbuildererror",4]]]],null,[[["",0]],["builddetails",3]],[[["",0]],["builddetailsbuilder",3]],[[["",0]],["health",3]],[[["",0]],["healthbuilder",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[]],[[]],[[["",0],["bool",0]],["",0]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[["uninitializedfielderror",3]]],[[]],[[["string",3]]],[[]],[[]],[[]],[[]],[[["uninitializedfielderror",3]]],[[["string",3]]],[[]],[[["",0],["str",0]],["",0]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["option",4]],["bool",0]],[[["",0],["option",4,[["bool",0]]]],["",0]],null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[["",0]],["result",4]],[[["",0]],["result",4]],[[["serviceconfig",3]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["string",3]],[[["",0]],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0],["str",0]],["",0]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],null,[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,[[["serviceconfig",3]]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[],["result",4]],[[]],[[]],null,[[]],[[]],null,[[["appservice",3]]],[[["",0]],["result",4]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[],["result",4]],[[]],[[["notification",3]]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[]],null,null,null,null,null,null,[[["appservice",3]]],null,[[["",0]],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[["appdata",6],["str",0]]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[],["result",4]],[[],["result",4]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[]],null,null,null,null,[[["appservice",3]]],[[["",0]],["result",4]],[[["",0]],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],null,[[]],null,[[],["notifications",3]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,[[["serviceconfig",3]]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["getconfigpayload",3]],[[["",0],["",0]]],[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],null,[[["appdata",6],["str",0]]],[[]],[[]],null,[[["appservice",3]]],[[["",0]],["result",4]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["",0]],["str",0]],null,[[]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["str",0]],null,[[["",0]],["str",0]],null,[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["validationtoken",3]],[[["",0],["",0]]],[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["",0]],["result",4]],[[["",0]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["captchavalidateresp",3]],[[["",0],["",0]]],[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["",0]],["result",4]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[]],[[]],null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],null,[[]],[[["",0],["option",4,[["str",0]]]],["string",3]],[[]],null,[[],["routes",3]],null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,null,[[["",0],["addsite",3]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,null,null,null,[[]],[[]],[[],["config",3]],[[],["option",4,[["asyncsmtptransport",3,[["tokio1executor",3]]]]]],[[["",0],["string",3]]],[[]],[[]],null,[[]],[[]],[[["addr",3,[["mastertrait",8]]],["addr",3,[["save",8]]]],["system",3,[["save",8],["mastertrait",8]]]],[[["",0],["removecaptcha",3]]],[[["",0],["rename",3]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0],["verifycaptcharesult",3]]],[[["",0],["work",3]]],[[]],[[]],null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["date",3]],[[["",0],["",0]]],[[["",0]],["string",3]],[[["",0],["formatter",3]],["result",6]],[[["offsetdatetime",3]],["string",3]],[[]],[[]],[[["",0]],["string",3]],null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["appdata",6]]],[[]],null,[[]],[[["appdata",6]]],[[["appdata",6],["duration",3]]],[[["appdata",6],["duration",3]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[]],[[]],[[]],[[]],[[["str",0]],["option",4,[["embeddedfile",3]]]],[[["str",0]],["option",4,[["embeddedfile",3]]]],[[["str",0]],["httpresponse",3]],null,[[]],[[]],[[]],[[]],[[]],[[],["filenames",4]],[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,[[["serviceconfig",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["indexpage",3]],[[["",0],["",0]]],[[]],[[]],[[["str",0]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["data",3],["str",0],["str",0]]],null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[],["result",4]],[[["",0],["",0]],["bool",0]],[[["",0],["serviceerror",4]],["bool",0]],[[["",0],["pageerror",4]],["bool",0]],null,[[["",0]],["httpresponse",3]],[[["",0]],["httpresponse",3]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[["recverror",3]]],[[["validationerrors",3]],["serviceerror",4]],[[["parseerror",4]],["serviceerror",4]],[[["captchaerror",4]],["serviceerror",4]],[[["error",4]]],[[["smtperror",3]]],[[["mailboxerror",4]]],[[["credserror",4]],["serviceerror",4]],[[]],[[]],[[]],[[["error",4]]],[[["serviceerror",4]]],[[]],[[]],[[]],[[]],[[["",0],["serviceerror",4]],["bool",0]],[[["",0],["pageerror",4]],["bool",0]],[[["",0]],["result",4]],[[["",0]],["option",4,[["error",8]]]],[[["",0]],["option",4,[["error",8]]]],[[["",0]],["option",4,[["error",8]]]],[[["",0]],["statuscode",3]],[[["",0]],["statuscode",3]],[[["",0]],["string",3]],[[["",0]],["string",3]],[[["",0]],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,[[],["authentication",3,[["routes",3]]]],null,null,[[["serviceconfig",3]]],null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["indexpage",3]],[[["",0],["",0]]],[[]],[[["",0]],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["indexpage",3]],[[["",0],["",0]]],[[]],[[["",0]],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["",0],["option",4,[["str",0]]]],["string",3]],[[]],[[]],null,null,[[],["auth",3]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["sudopage",3]],[[["",0],["",0]]],null,[[]],[[]],[[["str",0],["option",4,[["vec",3]]]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,[[]],null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["errorpage",3]],[[["",0],["",0]]],[[["",0]],["string",3]],[[["",0]],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["str",0],["str",0]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],null,[[["serviceconfig",3]]],null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,[[]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["indexpage",3]],[[["",0],["",0]]],[[]],[[]],[[]],[[]],[[["vec",3,[["mcaptchadetails",3]]]]],null,null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],null,[[["serviceconfig",3]]],null,null,null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["notification",3]]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,null,null,[[["vec",3,[["notification",3]]]]],null,[[["",0]],["string",3]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],null,[[]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["indexpage",3]],[[["",0],["",0]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],null,null,[[["serviceconfig",3]]],null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],null,[[]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,[[]],null,null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0]],["advanceindexpage",3]],[[["",0]],["easyindexpage",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[]],[[]],[[["",0]],["string",3]],[[["",0]],["string",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],[[["buffer",3]],["result",4,[["rendererror",4]]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["mcaptchaconfig",3]],[[["",0]],["level",3]],[[["",0]],["advanceeditpage",3]],[[["",0]],["easyeditpage",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[["mcaptchaconfig",3],["vec",3,[["level",3]]],["string",3]]],[[["string",3],["trafficpattern",3]]],null,[[["appservice",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],[[["buffer",3]],["result",4,[["rendererror",4]]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["indexpage",3]],[[["",0],["",0]]],[[]],[[]],[[["appdata",6],["identity",3]]],[[]],[[]],null,[[["vec",3,[["mcaptchadetails",3]]]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],null,null,null,[[]],[[["",0],["str",0]],["string",3]],[[["",0],["str",0]],["string",3]],[[["",0],["str",0]],["string",3]],[[]],[[["",0],["str",0]],["string",3]],[[]],null,[[]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,[[]],null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["mcaptchaconfig",3]],[[["",0]],["level",3]],[[["",0]],["indexpage",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,[[["stats",3],["mcaptchaconfig",3],["vec",3,[["level",3]]],["string",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],null,[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[]],[[["",0],["option",4,[["str",0]]]],["string",3]],[[]],null,[[]],[[],["routes",3]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["indexpage",3]],[[["",0],["",0]]],[[]],[[["",0]],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],[[]],[[["serviceconfig",3]]],null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[["config",3]]],[[["",0]],["server",3]],[[["",0]],["captcha",3]],[[["",0]],["defaultdifficultystrategy",3]],[[["",0]],["smtp",3]],[[["",0]],["databasebuilder",3]],[[["",0]],["database",3]],[[["",0]],["redis",3]],[[["",0]],["settings",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,[[["url",3]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["",0]],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["result",4,[["configerror",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["config",3]]],[[["config",3],["databasebuilder",3]]],null,null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["serviceconfig",3]]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],null,[[]],[[["",0],["str",0]],["option",4,[["str",0]]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[]],[[]],[[]],[[]],[[["str",0]],["option",4,[["embeddedfile",3]]]],[[["str",0]],["option",4,[["embeddedfile",3]]]],[[["str",0]],["option",4,[["embeddedfile",3]]]],[[["str",0]],["option",4,[["embeddedfile",3]]]],[[["str",0]],["httpresponse",3]],[[["str",0]],["httpresponse",3]],[[]],[[]],[[]],[[]],[[]],[[],["filenames",4]],[[],["filenames",4]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["statsunixtimestamp",3]],[[["",0]],["stats",3]],[[["",0]],["statspayload",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,null,null,null,[[],["result",4]],[[],["result",4]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[["stats",3]]],[[]],[[]],[[]],null,[[["str",0],["str",0],["pgpool",6]]],null,[[["",0]],["result",4]],[[["",0]],["result",4]],null,null,[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[],["vec",3,[["i64",0]]]],[[]],[[]],[[]],[[["str",0],["str",0],["pgpool",6]]],[[["str",0],["str",0],["pgpool",6]]],[[["str",0],["str",0],["pgpool",6]]],[[["str",0],["pgpool",6]]],[[["str",0],["pgpool",6]]],[[["str",0],["pgpool",6]]],null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["indexpage",3]],[[["",0],["",0]]],[[["",0]],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],["result",4,[["rendererror",4]]]],null,[[["serviceconfig",3]]],null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,[[]]],"p":[[3,"KEY"],[3,"GITHUB"],[3,"HOME"],[3,"SETTINGS_ICON"],[3,"CREDIT_CARD"],[3,"HELP_CIRCLE"],[3,"MESSAGE"],[3,"DOCS_ICON"],[3,"MCAPTCHA_TRANS_ICON"],[3,"BAR_CHART"],[3,"SETTINGS"],[3,"FILES"],[3,"JS"],[3,"CSS"],[3,"MOBILE_CSS"],[3,"VERIFICATIN_WIDGET_JS"],[3,"VERIFICATIN_WIDGET_CSS"],[3,"SOURCE_FILES_OF_INSTANCE"],[3,"Settings"],[3,"Data"],[3,"RedirectQuery"],[3,"AccountCheckPayload"],[3,"AccountCheckResp"],[3,"delete_account"],[3,"Email"],[3,"email_exists"],[3,"set_email"],[3,"UpdatePassword"],[3,"ChangePasswordReqest"],[3,"update_user_password"],[3,"Account"],[3,"Secret"],[3,"get_secret"],[3,"update_user_secret"],[3,"username_exists"],[3,"Username"],[3,"set_username"],[3,"register"],[3,"login"],[3,"signout"],[3,"Auth"],[3,"Register"],[3,"Login"],[3,"Password"],[3,"CreateCaptcha"],[3,"MCaptchaDetails"],[3,"create"],[3,"DeleteCaptcha"],[3,"delete"],[3,"TrafficPattern"],[3,"create"],[3,"UpdateTrafficPattern"],[3,"update"],[3,"Easy"],[3,"get_captcha"],[3,"Levels"],[3,"I32Levels"],[3,"Captcha"],[3,"StatsPayload"],[3,"get"],[3,"Stats"],[3,"update_key"],[3,"UpdateCaptcha"],[3,"update_captcha"],[4,"BuildDetailsBuilderError"],[4,"HealthBuilderError"],[3,"BuildDetails"],[3,"BuildDetailsBuilder"],[3,"build_details"],[3,"Health"],[3,"HealthBuilder"],[3,"health"],[13,"UninitializedField"],[13,"ValidationError"],[13,"UninitializedField"],[13,"ValidationError"],[3,"Meta"],[3,"AddNotification"],[3,"add_notification"],[3,"Notification"],[3,"NotificationResp"],[3,"get_notification"],[3,"MarkReadReq"],[3,"NotificationResp"],[3,"mark_read"],[3,"Notifications"],[3,"GetConfigPayload"],[3,"get_config"],[3,"PoW"],[3,"ValidationToken"],[3,"verify_pow"],[3,"CaptchaValidateResp"],[3,"validate_captcha_token"],[3,"Routes"],[4,"SystemGroup"],[13,"Embedded"],[13,"Redis"],[3,"Date"],[3,"DemoUser"],[3,"Asset"],[3,"dist"],[3,"spec"],[3,"index"],[3,"Docs"],[3,"IndexPage"],[3,"SmtpErrorWrapper"],[4,"ServiceError"],[4,"PageError"],[3,"ErrorToResponse"],[13,"ServiceError"],[13,"UnableToSendEmail"],[13,"CaptchaError"],[3,"INDEX"],[3,"IndexPage"],[3,"login"],[3,"INDEX"],[3,"IndexPage"],[3,"join"],[3,"Auth"],[3,"SudoPage"],[3,"INTERNAL_SERVER_ERROR_BODY"],[3,"UNKNOWN_ERROR_BODY"],[3,"ErrorPage"],[3,"error"],[3,"Errors"],[3,"IndexPage"],[3,"panel"],[3,"Notification"],[3,"IndexPage"],[3,"notifications"],[3,"Panel"],[3,"IndexPage"],[3,"settings"],[3,"delete_account"],[3,"update_secret"],[3,"Settings"],[3,"ADVANCE_INDEX"],[3,"EASY_INDEX"],[3,"EasyIndexPage"],[3,"AdvanceIndexPage"],[3,"advance"],[3,"easy"],[3,"delete_sitekey"],[3,"McaptchaConfig"],[3,"Level"],[3,"AdvanceEditPage"],[3,"advance"],[3,"EasyEditPage"],[3,"easy"],[3,"IndexPage"],[3,"list_sitekeys"],[3,"Sitekey"],[3,"McaptchaConfig"],[3,"Level"],[3,"IndexPage"],[3,"view_sitekey"],[3,"Routes"],[3,"INDEX"],[3,"IndexPage"],[3,"sitemap"],[3,"DefaultDifficultyStrategy"],[3,"Server"],[3,"Captcha"],[3,"Smtp"],[3,"DatabaseBuilder"],[3,"Database"],[3,"Redis"],[3,"FileMap"],[3,"Asset"],[3,"static_files"],[3,"Favicons"],[3,"favicons"],[3,"StatsUnixTimestamp"],[3,"Stats"],[3,"StatsPayload"],[3,"INDEX_PAGE"],[3,"IndexPage"],[3,"show_widget"],[3,"Widget"]]},\ +"tests_migrate":{"doc":"","t":[3,3,12,12,12,11,11,5,5,12,12,12,12,11,11,11,5,12,12,0,12,12,11,11,11,11,3,3,3,3,3,3,3,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,5,5,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,11,11],"n":["SETTINGS","Settings","__private_field","allow_demo","allow_registration","borrow","borrow_mut","build","cache_bust","captcha","commercial","database","debug","deref","from","into","main","redis","server","settings","smtp","source_code","try_from","try_into","type_id","vzip","Captcha","Database","DatabaseBuilder","DefaultDifficultyStrategy","Redis","Server","Settings","Smtp","allow_demo","allow_registration","avg_traffic_difficulty","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic_difficulty","captcha","check_url","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commercial","cookie_secret","database","debug","default_difficulty_strategy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","domain","duration","extract_database_url","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gc","get_ip","hostname","into","into","into","into","into","into","into","into","ip","name","new","password","password","peak_sustainable_traffic_difficulty","pool","pool","port","port","port","proxy_has_tls","redis","reply","salt","server","set_database_url","set_from_database_url","smtp","source_code","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","url","url","url_prefix","username","username","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":["tests_migrate","","","","","","","","","","","","","","","","","","","","","","","","","","tests_migrate::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,1,2,2,1,1,0,0,2,2,2,2,1,1,1,0,2,2,0,2,2,1,1,1,1,0,0,0,0,0,0,0,0,2,2,3,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,3,2,0,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,2,4,2,2,5,4,5,3,6,7,8,9,2,4,3,7,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,6,5,4,7,4,5,3,6,7,8,9,2,4,7,2,6,7,3,8,9,4,6,7,4,2,6,5,2,0,0,2,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,6,8,9,4,6,7,4,5,3,6,7,8,9,2],"f":[null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],null,null,null,null,[[["",0]],["settings",3]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[["config",3]]],[[["",0]],["server",3]],[[["",0]],["captcha",3]],[[["",0]],["defaultdifficultystrategy",3]],[[["",0]],["smtp",3]],[[["",0]],["databasebuilder",3]],[[["",0]],["database",3]],[[["",0]],["redis",3]],[[["",0]],["settings",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,[[["url",3]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["",0]],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["result",4,[["configerror",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["config",3]]],[[["config",3],["databasebuilder",3]]],null,null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]],"p":[[3,"SETTINGS"],[3,"Settings"],[3,"DefaultDifficultyStrategy"],[3,"Server"],[3,"Captcha"],[3,"Smtp"],[3,"DatabaseBuilder"],[3,"Database"],[3,"Redis"]]}\ }'); if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/search.js b/search.js index 91de2a15..a8026db5 100644 --- a/search.js +++ b/search.js @@ -1 +1,2 @@ -(function(){var itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias"];var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function printTab(nb){if(nb===0||nb===1||nb===2){searchState.currentTab=nb}var nb_copy=nb;onEachLazy(document.getElementById("titles").childNodes,function(elem){if(nb_copy===0){addClass(elem,"selected")}else{removeClass(elem,"selected")}nb_copy-=1});onEachLazy(document.getElementById("results").childNodes,function(elem){if(nb===0){addClass(elem,"active")}else{removeClass(elem,"active")}nb-=1})}function removeEmptyStringsFromArray(x){for(var i=0,len=x.length;i-1){var obj=searchIndex[results[i].id];obj.lev=results[i].lev;var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType){var ar=[];for(var entry in results){if(hasOwnPropertyRustdoc(results,entry)){ar.push(results[entry])}}results=ar;var i,len,result;for(i=0,len=results.length;ib?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});for(i=0,len=results.length;i"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function checkGenerics(obj,val){var tmp_lev,elem_name;if(val.generics.length>0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);var elength=obj[GENERICS_DATA].length;for(var x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length>0){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length!==0){var tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}}}else if(literalSearch){if((!val.generics||val.generics.length===0)&&obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){return obj[GENERICS_DATA].some(function(name){return name===val.name})}return false}lev_distance=Math.min(levenshtein(obj[NAME],val.name),lev_distance);if(lev_distance<=MAX_LEV_DISTANCE){lev_distance=Math.ceil((checkGenerics(obj,val)+lev_distance)/2)}else if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var olength=obj[GENERICS_DATA].length;for(x=0;x0){var length=obj.type[INPUTS_DATA].length;for(var i=0;iOUTPUT_DATA){var ret=obj.type[OUTPUT_DATA];if(typeof ret[0]==="string"){ret=[ret]}for(var x=0,len=ret.length;xlength){return MAX_LEV_DISTANCE+1}for(var i=0;ilength){break}var lev_total=0;var aborted=false;for(var x=0;xMAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER)return true;if(filter===type)return true;var name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates){var aliases=[];var crateAliases=[];if(filterCrates!==undefined){if(ALIASES[filterCrates]&&ALIASES[filterCrates][query.search]){var query_aliases=ALIASES[filterCrates][query.search];var len=query_aliases.length;for(var i=0;iMAX_RESULTS){ret.others.pop()}};onEach(aliases,pushFunc);onEach(crateAliases,pushFunc)}var nSearchWords=searchWords.length;var i,it;var ty;var fullId;var returned;var in_args;var len;if((val.charAt(0)==="\""||val.charAt(0)==="'")&&val.charAt(val.length-1)===val.charAt(0)){val=extractGenerics(val.substr(1,val.length-2));for(i=0;i")>-1){var trimmer=function(s){return s.trim()};var parts=val.split("->").map(trimmer);var input=parts[0];var inputs=input.split(",").map(trimmer).sort();for(i=0,len=inputs.length;i1?paths.length-1:1);var lev,j;for(j=0;j1){lev=checkPath(contains,paths[paths.length-1],ty);if(lev>MAX_LEV_DISTANCE){continue}else if(lev>0){lev_add=lev/10}}returned=MAX_LEV_DISTANCE+1;in_args=MAX_LEV_DISTANCE+1;var index=-1;lev=MAX_LEV_DISTANCE+1;fullId=ty.id;if(searchWords[j].indexOf(split[i])>-1||searchWords[j].indexOf(val)>-1||ty.normalizedName.indexOf(val)>-1){if(typePassesFilter(typeFilter,ty.ty)&&results[fullId]===undefined){index=ty.normalizedName.indexOf(val)}}if((lev=levenshtein(searchWords[j],val))<=MAX_LEV_DISTANCE){if(typePassesFilter(typeFilter,ty.ty)){lev+=1}else{lev=MAX_LEV_DISTANCE+1}}in_args=findArg(ty,valGenerics,false,typeFilter);returned=checkReturned(ty,valGenerics,false,typeFilter);lev+=lev_add;if(lev>0&&val.length>3&&searchWords[j].indexOf(val)>-1){if(val.length<6){lev-=1}else{lev=0}}if(in_args<=MAX_LEV_DISTANCE){if(results_in_args[fullId]===undefined){results_in_args[fullId]={id:j,index:index,lev:in_args,}}results_in_args[fullId].lev=Math.min(results_in_args[fullId].lev,in_args)}if(returned<=MAX_LEV_DISTANCE){if(results_returned[fullId]===undefined){results_returned[fullId]={id:j,index:index,lev:returned,}}results_returned[fullId].lev=Math.min(results_returned[fullId].lev,returned)}if(typePassesFilter(typeFilter,ty.ty)&&(index!==-1||lev<=MAX_LEV_DISTANCE)){if(index!==-1&&paths.length<2){lev=0}if(results[fullId]===undefined){results[fullId]={id:j,index:index,lev:lev,}}results[fullId].lev=Math.min(results[fullId].lev,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results,false),};handleAliases(ret,query,filterCrates);return ret}function validateResult(name,path,keys,parent){for(var i=0,len=keys.length;i-1||path.indexOf(keys[i])>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(keys[i])>-1)||levenshtein(name,keys[i])<=MAX_LEV_DISTANCE)){return false}}return true}function getQuery(raw){var matches,type,query;query=raw;matches=query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);if(matches){type=matches[1].replace(/^const$/,"constant");query=query.substring(matches[0].length)}return{raw:raw,query:query,type:type,id:query+type}}function nextTab(direction){var next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){var target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);if(target){target.focus()}}function buildHrefAndPath(item){var displayPath;var href;var type=itemTypes[item.ty];var name=item.name;var path=item.path;if(type==="mod"){displayPath=path+"::";href=window.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="primitive"||type==="keyword"){displayPath="";href=window.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=window.rootPath+name+"/index.html"}else if(item.parent!==undefined){var myparent=item.parent;var anchor="#"+type+"."+name;var parentType=itemTypes[myparent.ty];var pageType=parentType;var pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){var enumNameIdx=item.path.lastIndexOf("::");var enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=window.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=window.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function escape(content){var h1=document.createElement("h1");h1.textContent=content;return h1.innerHTML}function pathSplitter(path){var tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){var extraClass="";if(display===true){extraClass=" active"}var output=document.createElement("div");var duplicates={};var length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(function(item){if(item.is_alias!==true){if(duplicates[item.fullPath]){return}duplicates[item.fullPath]=true}var name=item.name;var type=itemTypes[item.ty];length+=1;var extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}var link=document.createElement("a");link.className="result-"+type;link.href=item.href;var wrapper=document.createElement("div");var resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){var alias=document.createElement("span");alias.className="alias";var bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");wrapper.appendChild(resultName);var description=document.createElement("div");description.className="desc";var spanDesc=document.createElement("span");spanDesc.insertAdjacentHTML("beforeend",item.desc);description.appendChild(spanDesc);wrapper.appendChild(description);link.appendChild(wrapper);output.appendChild(link)})}else{output.className="search-failed"+extraClass;output.innerHTML="No results :(
"+"Try on
DuckDuckGo?

"+"Or try looking in one of these:

 1
+mod.rs - source
+    
+    
 1
  2
  3
  4
@@ -35,6 +40,5 @@
 
 pub mod v1;
 
-
- +

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