File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ // Copyright 2018 The Rust Project Developers. See the COPYRIGHT
2+ // file at the top-level directory of this distribution and at
3+ // http://rust-lang.org/COPYRIGHT.
4+ //
5+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+ // option. This file may not be copied, modified, or distributed
9+ // except according to those terms.
10+
11+ use std:: ops:: { Mul , MulAssign } ;
12+
13+ pub trait ClosedMul < Right > : Sized + Mul < Right , Output = Self > + MulAssign < Right > { }
14+ impl < T , Right > ClosedMul < Right > for T
15+ where
16+ T : Mul < Right , Output = T > + MulAssign < Right > ,
17+ {
18+ }
19+
20+ pub trait InnerSpace : ClosedMul < <Self as InnerSpace >:: Real > {
21+ type Real ;
22+ }
23+
24+ pub trait FiniteDimVectorSpace : ClosedMul < <Self as FiniteDimVectorSpace >:: Field > {
25+ type Field ;
26+ }
27+
28+ pub trait FiniteDimInnerSpace
29+ : InnerSpace + FiniteDimVectorSpace < Field = <Self as InnerSpace >:: Real > {
30+ }
31+
32+ pub trait EuclideanSpace : ClosedMul < <Self as EuclideanSpace >:: Real > {
33+ type Coordinates : FiniteDimInnerSpace < Real = Self :: Real >
34+ + Mul < Self :: Real , Output = Self :: Coordinates >
35+ + MulAssign < Self :: Real > ;
36+
37+ type Real ;
38+ }
39+
40+ fn main ( ) { }
You can’t perform that action at this time.
0 commit comments