Q:

How do I create a nested structure?

I'm implementing a method that has a nested structure call.
I read about Rust lifetimes and I think my problem is about lifetimes, but I cannot understand how can I use this in the code.
#[derive(Debug)]
pub struct Request {
    Header: String
} 
#[derive(Debug)]
pub enum Proto {
    HTTP,
    HTTPS
}

#[derive(Debug)]
pub struct HTTP {
    ssss: Request,
    names: Proto,
}

impl HTTP {
    pub fn new(name: Proto) -> HTTP {
        HTTP{
            ssss.Header: "Herman".to_string(),
            names: name,
        }
    }
}

It's not possible assign a value to ssss.Header:
error: expected one of `,` or `}`, found `.`
  --> src/main.rs:20:17
   |
20 |             ssss.Header: "Herman".to_string(),
   |                 ^ expected one of `,` or `}` here

error[E0425]: cannot find value `ssss` in this scope
  --> src/main.rs:20:13
   |
20 |             ssss.Header: "Herman".to_string(),
   |             ^^^^
   |             |
   |             `self` value is only available in methods with `self` parameter
   |             help: try: `self.ssss`

error[E0063]: missing field `names` in initializer of `HTTP`
  --> src/main.rs:19:9
   |
19 |         HTTP{
   |         ^^^^ missing `names`

A:

There is nothing magical about nested structures. You use the exact same syntax as a non-nested structure:
pub fn new(name: Proto) -> HTTP {
    HTTP {
        ssss: Request {
            header: "Herman".to_string(),
        },
        names: name,
    }
}

If you find the nesting too complicated, you can always introduce an intermediate variable:
pub fn new(names: Proto) -> HTTP {
    let ssss = Request {
        header: "Herman".to_string(),
    };

    HTTP { ssss, names }
}

Note: idiomatic Rust uses snake_case for identifiers like variables, methods, and struct properties. I've renamed your Header to header to avoid warnings.

