File: generic-const-items.rs

package info (click to toggle)
rustc 1.85.0%2Bdfsg3-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental, sid, trixie
  • size: 893,396 kB
  • sloc: xml: 158,127; python: 35,830; javascript: 19,497; cpp: 19,002; sh: 17,245; ansic: 13,127; asm: 4,376; makefile: 1,051; perl: 29; lisp: 29; ruby: 19; sql: 11
file content (38 lines) | stat: -rw-r--r-- 1,156 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#![feature(generic_const_items)]
#![allow(incomplete_features)]

//@ has 'generic_const_items/constant.K.html'
//@ has - '//*[@class="rust item-decl"]//code' \
// "pub const K<'a, T: 'a + Copy, const N: usize>: Option<[T; N]> \
// where \
//     String: From<T>;"
pub const K<'a, T: 'a + Copy, const N: usize>: Option<[T; N]> = None
where
    String: From<T>;

//@ has generic_const_items/trait.Trait.html
pub trait Trait<T: ?Sized> {
    //@ has - '//*[@id="associatedconstant.C"]' \
    // "const C<'a>: &'a T \
    // where \
    //     T: 'a + Eq"
    const C<'a>: &'a T
    where
        T: 'a + Eq;
}

pub struct Implementor;

//@ has generic_const_items/struct.Implementor.html
//@ has - '//h3[@class="code-header"]' 'impl Trait<str> for Implementor'
impl Trait<str> for Implementor {
    //@ has - '//*[@id="associatedconstant.C"]' \
    // "const C<'a>: &'a str = \"C\" \
    // where \
    //     str: 'a"
    const C<'a>: &'a str = "C"
    // In real code we could've left off this bound but adding it explicitly allows us to test if
    // we render where-clauses on associated consts inside impl blocks correctly.
    where
        str: 'a;
}