I think 'static is the global lifetime - that might require that the
objects can exist for as long as the program does.

also FWIW, I'm pretty sure these kinds of discussions are better-suited for
stack overflow. The mailing list is somewhat deprecated, at least
unofficially.

On Mon, Dec 1, 2014 at 11:48 AM, Philippe Daouadi <blastro...@free.fr>
wrote:

> Hi,
>
> In my project, I use something like:
>
> struct Database {
>     db: Box<Store + 'static>,
>     logger: Box<Logger + 'static>,
> }
>
> Does anyone know what is the difference? They seem to work the same to me.
>
> Philippe
>
>
> On 12/01/2014 05:04 PM, Federico Ravasio wrote:
>
>> понедельник, 1 декабря 2014 г. в 16:59, Ryan Michael написал:
>>
>>> I'm curious if the community has some design approaches to encapsulating
>>> interfaces to multiple generic implementations. For example, imagine I was
>>> writing an abstract database interface with multiple backing
>>> implementations for different stores (sqlite, pgsql, mysql, etc) and
>>> logging data to different types of loggers (stdout, file, network-attached,
>>> etc). The goal would be to implement some shared methods (insert, query,
>>> delete) to be delegated to different stores, with logging about the results.
>>>   My first approach to this was to create traits, and use them in a
>>> struct
>>>   trait Logger {
>>> fn log(&mut self, message: String),
>>> }
>>>   trait Store {
>>> fn insert(&mut self, value: String),
>>> fn query(&mut self, conditions: String) -> Vec<String>,
>>> fn delete(&mut self, value: String),
>>> }
>>>   struct Database {
>>> db: Store,
>>> logger: Logger,
>>> }
>>>   AFAICT, this isn't possible - struct fields seem to require concrete
>>> types.
>>>
>>>
>> Hello Ryan,
>> I’ve had some luck by wrapping trait fields into boxes, with explicit
>> lifetimes.
>>
>> This should work:
>>
>> struct Database<'a> {
>>      db: Box<Store + 'a>,
>>      logger: Box<Logger + 'a>,
>> }
>>
>>
>> Now, I’m not sure if that’s a community-accepted solution. Let’s see what
>> the others think. :)
>>
>> Cheers,
>> Federico
>>
>> _______________________________________________
>> Rust-dev mailing list
>> Rust-dev@mozilla.org
>> https://mail.mozilla.org/listinfo/rust-dev
>>
>
> _______________________________________________
> Rust-dev mailing list
> Rust-dev@mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
>
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to