首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`rocket::form::Form<ContentsRequest>`没有实现“`FromSegments<‘_>”的特性

`rocket::form::Form<ContentsRequest>`没有实现“`FromSegments<‘_>”的特性
EN

Stack Overflow用户
提问于 2022-06-09 14:42:04
回答 1查看 114关注 0票数 0

当我在锈菌rocket = { version = "=0.5.0-rc.2", features = ["json"] }中添加表单请求时,如下所示:

代码语言:javascript
复制
#[get("/page/<path..>")]
fn get_page(path: Form<ContentsRequest>) {  }

编译器显示的错误如下:

代码语言:javascript
复制
error[E0277]: the trait bound `rocket::form::Form<ContentsRequest>: FromSegments<'_>` is not satisfied
  --> src/main.rs:21:19
   |
21 | fn get_page(path: Form<ContentsRequest>) {  }
   |                   ^^^^ the trait `FromSegments<'_>` is not implemented for `rocket::form::Form<ContentsRequest>`

为什么会发生这种事?我该怎么做才能修好它?这是完整的main.rs代码:

代码语言:javascript
复制
#[macro_use] extern crate rocket;

use rocket::form::Form;
use rocket_okapi::{mount_endpoints_and_merged_docs, rapidoc::*, swagger_ui::*};
use rocket_okapi::settings::UrlObject;
use rocket::serde::Deserialize;
use rocket::serde::Serialize;


#[launch]
fn rocket() -> _ {
    rocket::build().mount("/", routes![get_page])
}


#[get("/page/<path..>")]
fn get_page(path: Form<ContentsRequest>) {  }


use rocket_okapi::okapi::schemars::JsonSchema;
use rocket_okapi::okapi::schemars;

#[derive(Debug, PartialEq, Eq, Deserialize, Serialize, FromForm, JsonSchema)]
#[allow(non_snake_case)]
pub struct ContentsRequest {
    /// The contents_type
    contents_type: i32
}

这是Cargo.toml依赖关系:

代码语言:javascript
复制
[package]
name = "rust-demo"
version = "0.1.0"
edition = "2018"

[dependencies]
rocket = { version = "=0.5.0-rc.2", features = ["json"] }

okapi = { git = "https://github.com/GREsau/okapi.git"}
schemars = "0.7"
rocket_okapi = { git = "https://github.com/GREsau/okapi.git", features = ["swagger", "rapidoc"] }


serde = { version = "1.0.64", features = ["derive"] }
serde_json = "1.0.64"
serde_derive = "1.0"
# database
diesel = { version = "1.4.7", features = ["postgres","serde_json"] }
dotenv = "0.15.0"
jsonwebtoken = "7"
chrono = "0.4"
config = "0.11"
ring = "0.16.20"
md5 = "0.7.0"
data-encoding = "2.3.2"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-09 15:18:46

匹配尾随查询参数的语法是?之前的<name..>。您也不需要在Form<_>中包装该类型

代码语言:javascript
复制
#[get("/page?<path..>")]
fn get_page(path: ContentsRequest) {}

文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72562305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档