@@ -208,10 +208,10 @@ <h1 class="title">関連型</h1>
208
208
209
209
< span class ='rusttest '> fn main() {
210
210
trait Graph<N, E> {
211
- fn has_edge(&self, &N, &N) -> bool;
212
- fn edges(&self, &N) -> Vec<E>;
213
- // etc
214
- }
211
+ fn has_edge(&self, &N, &N) -> bool;
212
+ fn edges(&self, &N) -> Vec<E>;
213
+ // etc
214
+ }
215
215
}</ span > < pre class ='rust rust-example-rendered '>
216
216
< span class ='kw '> trait</ span > < span class ='ident '> Graph</ span > < span class ='op '> <</ span > < span class ='ident '> N</ span > , < span class ='ident '> E</ span > < span class ='op '> ></ span > {
217
217
< span class ='kw '> fn</ span > < span class ='ident '> has_edge</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> N</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> bool</ span > ;
@@ -248,20 +248,20 @@ <h1 class="title">関連型</h1>
248
248
249
249
< span class ='rusttest '> fn main() {
250
250
trait Graph {
251
- type N;
252
- type E;
253
-
254
- fn has_edge(&self, &Self::N, &Self::N) -> bool;
255
- fn edges(&self, &Self::N) -> Vec<Self::E>;
256
- // etc
257
- }
251
+ type N;
252
+ type E;
253
+
254
+ fn has_edge(&self, &Self::N, &Self::N) -> bool;
255
+ fn edges(&self, &Self::N) -> Vec<Self::E>;
256
+ // etc
257
+ }
258
258
}</ span > < pre class ='rust rust-example-rendered '>
259
259
< span class ='kw '> trait</ span > < span class ='ident '> Graph</ span > {
260
260
< span class ='kw '> type</ span > < span class ='ident '> N</ span > ;
261
261
< span class ='kw '> type</ span > < span class ='ident '> E</ span > ;
262
262
263
- < span class ='kw '> fn</ span > < span class ='ident '> has_edge</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> N</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> bool</ span > ;
264
- < span class ='kw '> fn</ span > < span class ='ident '> edges</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> Vec</ span > < span class ='op '> <</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> E</ span > < span class ='op '> ></ span > ;
263
+ < span class ='kw '> fn</ span > < span class ='ident '> has_edge</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='self '> Self</ span > ::< span class ='ident '> N</ span > , < span class ='kw-2 '> &</ span > < span class ='self '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> bool</ span > ;
264
+ < span class ='kw '> fn</ span > < span class ='ident '> edges</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='self '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> Vec</ span > < span class ='op '> <</ span > < span class ='self '> Self</ span > ::< span class ='ident '> E</ span > < span class ='op '> ></ span > ;
265
265
< span class ='comment '> // etc</ span >
266
266
}</ pre >
267
267
@@ -291,19 +291,19 @@ <h2 id='関連型を定義する' class='section-header'><a href='#関連型を
291
291
292
292
< span class ='rusttest '> fn main() {
293
293
trait Graph {
294
- type N;
295
- type E;
296
-
297
- fn has_edge(&self, &Self::N, &Self::N) -> bool;
298
- fn edges(&self, &Self::N) -> Vec<Self::E>;
299
- }
294
+ type N;
295
+ type E;
296
+
297
+ fn has_edge(&self, &Self::N, &Self::N) -> bool;
298
+ fn edges(&self, &Self::N) -> Vec<Self::E>;
299
+ }
300
300
}</ span > < pre class ='rust rust-example-rendered '>
301
301
< span class ='kw '> trait</ span > < span class ='ident '> Graph</ span > {
302
302
< span class ='kw '> type</ span > < span class ='ident '> N</ span > ;
303
303
< span class ='kw '> type</ span > < span class ='ident '> E</ span > ;
304
304
305
- < span class ='kw '> fn</ span > < span class ='ident '> has_edge</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> N</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> bool</ span > ;
306
- < span class ='kw '> fn</ span > < span class ='ident '> edges</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> Vec</ span > < span class ='op '> <</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> E</ span > < span class ='op '> ></ span > ;
305
+ < span class ='kw '> fn</ span > < span class ='ident '> has_edge</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='self '> Self</ span > ::< span class ='ident '> N</ span > , < span class ='kw-2 '> &</ span > < span class ='self '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> bool</ span > ;
306
+ < span class ='kw '> fn</ span > < span class ='ident '> edges</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='self '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> Vec</ span > < span class ='op '> <</ span > < span class ='self '> Self</ span > ::< span class ='ident '> E</ span > < span class ='op '> ></ span > ;
307
307
}</ pre >
308
308
309
309
<!-- Simple enough. Associated types use the `type` keyword, and go inside the body -->
@@ -323,23 +323,23 @@ <h2 id='関連型を定義する' class='section-header'><a href='#関連型を
323
323
324
324
< span class ='rusttest '> fn main() {
325
325
use std::fmt;
326
-
327
- trait Graph {
328
- type N: fmt::Display;
329
- type E;
330
-
331
- fn has_edge(&self, &Self::N, &Self::N) -> bool;
332
- fn edges(&self, &Self::N) -> Vec<Self::E>;
333
- }
326
+
327
+ trait Graph {
328
+ type N: fmt::Display;
329
+ type E;
330
+
331
+ fn has_edge(&self, &Self::N, &Self::N) -> bool;
332
+ fn edges(&self, &Self::N) -> Vec<Self::E>;
333
+ }
334
334
}</ span > < pre class ='rust rust-example-rendered '>
335
335
< span class ='kw '> use</ span > < span class ='ident '> std</ span > ::< span class ='ident '> fmt</ span > ;
336
336
337
337
< span class ='kw '> trait</ span > < span class ='ident '> Graph</ span > {
338
338
< span class ='kw '> type</ span > < span class ='ident '> N</ span > : < span class ='ident '> fmt</ span > ::< span class ='ident '> Display</ span > ;
339
339
< span class ='kw '> type</ span > < span class ='ident '> E</ span > ;
340
340
341
- < span class ='kw '> fn</ span > < span class ='ident '> has_edge</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> N</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> bool</ span > ;
342
- < span class ='kw '> fn</ span > < span class ='ident '> edges</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> Vec</ span > < span class ='op '> <</ span > < span class ='ident '> Self</ span > ::< span class ='ident '> E</ span > < span class ='op '> ></ span > ;
341
+ < span class ='kw '> fn</ span > < span class ='ident '> has_edge</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='self '> Self</ span > ::< span class ='ident '> N</ span > , < span class ='kw-2 '> &</ span > < span class ='self '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> bool</ span > ;
342
+ < span class ='kw '> fn</ span > < span class ='ident '> edges</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='kw-2 '> &</ span > < span class ='self '> Self</ span > ::< span class ='ident '> N</ span > ) < span class ='op '> -></ span > < span class ='ident '> Vec</ span > < span class ='op '> <</ span > < span class ='self '> Self</ span > ::< span class ='ident '> E</ span > < span class ='op '> ></ span > ;
343
343
}</ pre >
344
344
345
345
<!-- ## Implementing associated types -->
@@ -354,29 +354,29 @@ <h2 id='関連型を実装する' class='section-header'><a href='#関連型を
354
354
355
355
< span class ='rusttest '> fn main() {
356
356
trait Graph {
357
- type N;
358
- type E;
359
- fn has_edge(&self, &Self::N, &Self::N) -> bool;
360
- fn edges(&self, &Self::N) -> Vec<Self::E>;
357
+ type N;
358
+ type E;
359
+ fn has_edge(&self, &Self::N, &Self::N) -> bool;
360
+ fn edges(&self, &Self::N) -> Vec<Self::E>;
361
+ }
362
+ struct Node;
363
+
364
+ struct Edge;
365
+
366
+ struct MyGraph;
367
+
368
+ impl Graph for MyGraph {
369
+ type N = Node;
370
+ type E = Edge;
371
+
372
+ fn has_edge(&self, n1: &Node, n2: &Node) -> bool {
373
+ true
361
374
}
362
- struct Node;
363
-
364
- struct Edge;
365
-
366
- struct MyGraph;
367
-
368
- impl Graph for MyGraph {
369
- type N = Node;
370
- type E = Edge;
371
-
372
- fn has_edge(&self, n1: &Node, n2: &Node) -> bool {
373
- true
374
- }
375
-
376
- fn edges(&self, n: &Node) -> Vec<Edge> {
377
- Vec::new()
378
- }
375
+
376
+ fn edges(&self, n: &Node) -> Vec<Edge> {
377
+ Vec::new()
379
378
}
379
+ }
380
380
}</ span > < pre class ='rust rust-example-rendered '>
381
381
< span class ='kw '> struct</ span > < span class ='ident '> Node</ span > ;
382
382
@@ -389,7 +389,7 @@ <h2 id='関連型を実装する' class='section-header'><a href='#関連型を
389
389
< span class ='kw '> type</ span > < span class ='ident '> E</ span > < span class ='op '> =</ span > < span class ='ident '> Edge</ span > ;
390
390
391
391
< span class ='kw '> fn</ span > < span class ='ident '> has_edge</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='ident '> n1</ span > : < span class ='kw-2 '> &</ span > < span class ='ident '> Node</ span > , < span class ='ident '> n2</ span > : < span class ='kw-2 '> &</ span > < span class ='ident '> Node</ span > ) < span class ='op '> -></ span > < span class ='ident '> bool</ span > {
392
- < span class ='boolval '> true</ span >
392
+ < span class ='boolvalue '> true</ span >
393
393
}
394
394
395
395
< span class ='kw '> fn</ span > < span class ='ident '> edges</ span > (< span class ='kw-2 '> &</ span > < span class ='self '> self</ span > , < span class ='ident '> n</ span > : < span class ='kw-2 '> &</ span > < span class ='ident '> Node</ span > ) < span class ='op '> -></ span > < span class ='ident '> Vec</ span > < span class ='op '> <</ span > < span class ='ident '> Edge</ span > < span class ='op '> ></ span > {
@@ -439,26 +439,26 @@ <h2 id='関連型を伴うトレイト' class='section-header'><a href='#関連
439
439
440
440
< span class ='rusttest '> fn main() {
441
441
trait Graph {
442
- type N;
443
- type E;
444
- fn has_edge(&self, &Self::N, &Self::N) -> bool;
445
- fn edges(&self, &Self::N) -> Vec<Self::E>;
442
+ type N;
443
+ type E;
444
+ fn has_edge(&self, &Self::N, &Self::N) -> bool;
445
+ fn edges(&self, &Self::N) -> Vec<Self::E>;
446
+ }
447
+ struct Node;
448
+ struct Edge;
449
+ struct MyGraph;
450
+ impl Graph for MyGraph {
451
+ type N = Node;
452
+ type E = Edge;
453
+ fn has_edge(&self, n1: &Node, n2: &Node) -> bool {
454
+ true
446
455
}
447
- struct Node;
448
- struct Edge;
449
- struct MyGraph;
450
- impl Graph for MyGraph {
451
- type N = Node;
452
- type E = Edge;
453
- fn has_edge(&self, n1: &Node, n2: &Node) -> bool {
454
- true
455
- }
456
- fn edges(&self, n: &Node) -> Vec<Edge> {
457
- Vec::new()
458
- }
456
+ fn edges(&self, n: &Node) -> Vec<Edge> {
457
+ Vec::new()
459
458
}
460
- let graph = MyGraph;
461
- let obj = Box::new(graph) as Box<Graph>;
459
+ }
460
+ let graph = MyGraph;
461
+ let obj = Box::new(graph) as Box<Graph>;
462
462
}</ span > < pre class ='rust rust-example-rendered '>
463
463
< span class ='kw '> let</ span > < span class ='ident '> graph</ span > < span class ='op '> =</ span > < span class ='ident '> MyGraph</ span > ;
464
464
< span class ='kw '> let</ span > < span class ='ident '> obj</ span > < span class ='op '> =</ span > < span class ='ident '> Box</ span > ::< span class ='ident '> new</ span > (< span class ='ident '> graph</ span > ) < span class ='kw '> as</ span > < span class ='ident '> Box</ span > < span class ='op '> <</ span > < span class ='ident '> Graph</ span > < span class ='op '> ></ span > ;</ pre >
@@ -486,26 +486,26 @@ <h2 id='関連型を伴うトレイト' class='section-header'><a href='#関連
486
486
487
487
< span class ='rusttest '> fn main() {
488
488
trait Graph {
489
- type N;
490
- type E;
491
- fn has_edge(&self, &Self::N, &Self::N) -> bool;
492
- fn edges(&self, &Self::N) -> Vec<Self::E>;
489
+ type N;
490
+ type E;
491
+ fn has_edge(&self, &Self::N, &Self::N) -> bool;
492
+ fn edges(&self, &Self::N) -> Vec<Self::E>;
493
+ }
494
+ struct Node;
495
+ struct Edge;
496
+ struct MyGraph;
497
+ impl Graph for MyGraph {
498
+ type N = Node;
499
+ type E = Edge;
500
+ fn has_edge(&self, n1: &Node, n2: &Node) -> bool {
501
+ true
493
502
}
494
- struct Node;
495
- struct Edge;
496
- struct MyGraph;
497
- impl Graph for MyGraph {
498
- type N = Node;
499
- type E = Edge;
500
- fn has_edge(&self, n1: &Node, n2: &Node) -> bool {
501
- true
502
- }
503
- fn edges(&self, n: &Node) -> Vec<Edge> {
504
- Vec::new()
505
- }
503
+ fn edges(&self, n: &Node) -> Vec<Edge> {
504
+ Vec::new()
506
505
}
507
- let graph = MyGraph;
508
- let obj = Box::new(graph) as Box<Graph<N=Node, E=Edge>>;
506
+ }
507
+ let graph = MyGraph;
508
+ let obj = Box::new(graph) as Box<Graph<N=Node, E=Edge>>;
509
509
}</ span > < pre class ='rust rust-example-rendered '>
510
510
< span class ='kw '> let</ span > < span class ='ident '> graph</ span > < span class ='op '> =</ span > < span class ='ident '> MyGraph</ span > ;
511
511
< span class ='kw '> let</ span > < span class ='ident '> obj</ span > < span class ='op '> =</ span > < span class ='ident '> Box</ span > ::< span class ='ident '> new</ span > (< span class ='ident '> graph</ span > ) < span class ='kw '> as</ span > < span class ='ident '> Box</ span > < span class ='op '> <</ span > < span class ='ident '> Graph</ span > < span class ='op '> <</ span > < span class ='ident '> N</ span > < span class ='op '> =</ span > < span class ='ident '> Node</ span > , < span class ='ident '> E</ span > < span class ='op '> =</ span > < span class ='ident '> Edge</ span > < span class ='op '> >></ span > ;</ pre >
0 commit comments