1
부모 구조체에 래핑 된 일부 데이터를 보내기 위해 제네릭 함수를 작성하려고합니다. 그런 다음 데이터를 JSON으로 인코딩하고 소켓과 함께 보내야합니다.제네릭 형식을 인코딩 할 때 수명 매개 변수의 개수가 잘못되었습니다.
extern crate serialize;
use serialize::json;
use serialize::serialize::{Encodable, Encoder};
use std::io::{TcpStream, IoResult};
#[deriving(Decodable, Encodable)]
struct RemoteRequest<T> {
id: String,
auth: RequestAuth,
data: T,
}
fn send_request<'a, T:Encodable<Encoder<'a>>>(mut socket: TcpStream, id: &str, data: &'a T) -> IoResult<()> {
let encoded = json::encode(&RemoteRequest {
id: id.to_string(),
auth: RequestAuth {
id: "ForgeDevName".to_string(),
pass: "password".to_string(),
},
data: data,
});
return socket.write((encoded + "\n\n\n").as_bytes())
}
하지만 다음과 같은 컴파일러 오류 받고 있어요 : 아무리 내가 뭘
error: wrong number of lifetime parameters: expected 0, found 1 [E0107]
fn send_request<'a, T:Encodable<Encoder<'a>>>(mut socket: TcpStream, id: &str, data: &'a T) -> IoResult<()> {
^~~~~~~~~~~
을, 나는 나를 넘어 무엇 <T>
'인코더 <'a>'대신 '인코더'로 시도한 결과는 무엇입니까? – Shepmaster
형식 인수의 수가 잘못되었습니다. 예상 1, 찾음 0 ----- fn send_request> (mut 소켓 : TcpStream, ID : & str, 데이터 : & T) -> std :: io :: IoResult <()> –
olee