Thank you for the help. I've try this signature and I had an compile error. I thought it came from the signature but the problem when from the call.
It works now.

For the return type @mut MemWriter I work on the json doc and some example of use. I can make the change. I didn't find the issue about it. Did you create it?

Philippe

Le 28/11/2013 22:27, Erick Tryzelaar a écrit :
Good afternoon Phillippe,

Here's how to do it, assuming you're using rust 0.8 and the json library:

```
#[feature(managed_boxes)];

extern mod extra;

use std::io::mem::MemWriter;
use extra::serialize::{Encoder, Encodable};
use extra::json;

pub fn memory_encode<
    T: Encodable<json::Encoder>
>(to_encode_object: &T) -> @mut MemWriter {
    //Serialize the object in a string using a writer
    let m = @mut MemWriter::new();
    let mut encoder = json::Encoder(m as @mut Writer);
    to_encode_object.encode(&mut encoder);
    m
}

fn main() {
}
```

Regarding the trouble returning a `MemWriter` instead of a `@mut MemWriter`, the easiest thing would be to fix library to use `&mut ...` instead of `@mut ...`. I'll put in a PR to do that.



On Thu, Nov 28, 2013 at 3:55 AM, Philippe Delrieu <[email protected] <mailto:[email protected]>> wrote:

    I try to develop a function that take a Encodable parameter but I
    have the error wrong number of type arguments: expected 1 but found 0

    pub fn memory_encode(to_encode_object: &serialize::Encodable) ->
    @mut MemWriter  {
       //Serialize the object in a string using a writer
        let m = @mut MemWriter::new();
        let mut encoder = Encoder(m as @mut Writer);
        to_encode_object.encode(&mut encoder);
        m
    }

    The encodable trait is :
    pub trait Encodable<S:Encoder> {
        fn encode(&self, s: &mut S);
    }

    I try this definition
    memory_encode<T:serialize::Encodable<Encoder>>(to_encode_object:
    &T) -> @mut MemWriter

    But I can't use the method with a struct that implement Encodable.
    The error : mismatched types: expected `&<V31>` but found ..

    I have another question :
    I would like to return a MemWriter and not a @mut MemWriter . I
    didn't find a way to convert the @mut to ~

    Philippe Delrieu
    _______________________________________________
    Rust-dev mailing list
    [email protected] <mailto:[email protected]>
    https://mail.mozilla.org/listinfo/rust-dev



_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to